Commit c63b7bdb authored by 周健威's avatar 周健威

Merge branch 'holiday-price' into dev

# Conflicts:
#	ace-modules/ace-admin-api/src/main/java/com/github/wxiaoqi/security/admin/feign/dto/AppUserDTO.java
#	ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rest/AppUserController.java
#	xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
#	xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderVehicleCrosstownBiz.java
#	xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/feign/ThirdFeign.java
#	xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/feign/VehicleFeign.java
parents cb4730b7 5bfb3ea8
package com.github.wxiaoqi.security.admin.bo;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.io.Serializable;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/30 17:42
*/
@Data
public class UserBo implements Serializable {
private static final long serialVersionUID = 1L;
@JSONField(serialize = false)
private String orderNo;
private Integer userId;
private String phone;
private String name;
private String leaderName;
private String leaderPhone;
private Integer facilitateId;
private String facilitateName;
}
...@@ -14,7 +14,7 @@ import lombok.NoArgsConstructor; ...@@ -14,7 +14,7 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class AccountBindDTO { public class AccountBindDTO {
private String opendId; private String openId;
private String unionId; private String unionId;
private String nickName; private String nickName;
private String code; private String code;
......
...@@ -18,7 +18,7 @@ import lombok.Data; ...@@ -18,7 +18,7 @@ import lombok.Data;
@Table(name = "app_user_position") @Table(name = "app_user_position")
public class AppUserPosition implements Serializable { public class AppUserPosition implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 主键id * 主键id
*/ */
......
package com.github.wxiaoqi.security.admin.feign; package com.github.wxiaoqi.security.admin.feign;
import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO; import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin; import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember; import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
...@@ -141,5 +142,13 @@ public interface UserFeign { ...@@ -141,5 +142,13 @@ public interface UserFeign {
@RequestParam(value = "reason",required = false) String reason, @RequestParam(value = "reason",required = false) String reason,
@RequestParam(value = "isSuccess") Boolean isSuccess); @RequestParam(value = "isSuccess") Boolean isSuccess);
}
@GetMapping(value = "/app/user/users")
List<Integer> findAppUserIds(@RequestParam(value = "phone",required = false) String phone,
@RequestParam(value = "leaderPhone",required = false) String leaderPhone,
@RequestParam(value = "name",required = false) String name);
@PostMapping(value = "/app/user/users/info")
List<UserBo> findUserDetailByUserBo(@RequestBody(required = false) List<UserBo> userBos);
}
...@@ -93,5 +93,6 @@ public class AppUserDTO { ...@@ -93,5 +93,6 @@ public class AppUserDTO {
private Boolean isBindWx; private Boolean isBindWx;
private Boolean isBindAliPay; private Boolean isBindAliPay;
private Boolean isBindQQ; private Boolean isBindQQ;
//用户上线
private Integer parentId;
} }
...@@ -171,4 +171,19 @@ public class AppUserManageVo { ...@@ -171,4 +171,19 @@ public class AppUserManageVo {
* 身份信息 * 身份信息
*/ */
private String positionName; private String positionName;
/**
* 上级名称
*/
private String nameOfSuperior;
/**
* 上级id
*/
private Integer parentId;
/**
* 上级手机号
*/
private String superiorMobileNumber;
} }
...@@ -90,12 +90,15 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail ...@@ -90,12 +90,15 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
@CacheClear(pre = "user{1.userid}") @CacheClear(pre = "user{1.userid}")
public void updUuserInfoById(AppUserVo userVo) { public void updUuserInfoById(AppUserVo userVo) {
AppUserDetail entity = new AppUserDetail(); AppUserDetail entity = new AppUserDetail();
Example example = new Example(AppUserDetail.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("userid",userVo.getUserid());
try { try {
BeanUtils.copyProperties(entity, userVo); BeanUtils.copyProperties(entity, userVo);
if (entity != null) { if (entity != null) {
entity.setUpdHost(AppPermissionService.getIp()); entity.setUpdHost(AppPermissionService.getIp());
entity.setUpdatetime(Instant.now().toEpochMilli() / 1000L); entity.setUpdatetime(Instant.now().toEpochMilli() / 1000L);
super.updateSelectiveById(entity); mapper.updateByExampleSelective(entity,example);
} }
} catch (Exception e) { } catch (Exception e) {
...@@ -162,6 +165,6 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail ...@@ -162,6 +165,6 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
Example example = new Example(AppUserDetail.class); Example example = new Example(AppUserDetail.class);
Example.Criteria criteria = example.createCriteria(); Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("userid",userId); criteria.andEqualTo("userid",userId);
mapper.updateByExample(appUserDetail,example); mapper.updateByExampleSelective(appUserDetail,example);
} }
} }
...@@ -4,17 +4,22 @@ import com.ace.cache.annotation.Cache; ...@@ -4,17 +4,22 @@ import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear; import com.ace.cache.annotation.CacheClear;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.dto.AccountBindDTO; import com.github.wxiaoqi.security.admin.dto.AccountBindDTO;
import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin; import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.entity.AppUserRelation;
import com.github.wxiaoqi.security.admin.mapper.AppUserLoginMapper; import com.github.wxiaoqi.security.admin.mapper.AppUserLoginMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant; import com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant;
import com.github.wxiaoqi.security.common.constant.UserConstant; import com.github.wxiaoqi.security.common.constant.UserConstant;
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 com.xxfc.platform.im.utils.StringUtil;
import com.xxfc.platform.universal.entity.IdInformation; import com.xxfc.platform.universal.entity.IdInformation;
import com.xxfc.platform.universal.feign.MQSenderFeign; import com.xxfc.platform.universal.feign.MQSenderFeign;
import com.xxfc.platform.universal.feign.ThirdFeign; import com.xxfc.platform.universal.feign.ThirdFeign;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -24,9 +29,7 @@ import tk.mybatis.mapper.entity.Example; ...@@ -24,9 +29,7 @@ import tk.mybatis.mapper.entity.Example;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.time.Instant; import java.time.Instant;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.function.Function; import java.util.function.Function;
...@@ -57,6 +60,9 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { ...@@ -57,6 +60,9 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
@Autowired @Autowired
private AppUserAlipayBiz appUserAlipayBiz; private AppUserAlipayBiz appUserAlipayBiz;
@Autowired
private AppUserRelationBiz appUserRelationBiz;
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
@Override @Override
public void insertSelective(AppUserLogin entity) { public void insertSelective(AppUserLogin entity) {
...@@ -324,8 +330,8 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { ...@@ -324,8 +330,8 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
} }
public List<AppUserLogin> getUserByUsernameAndRealName(String username, String realName) { public List<AppUserLogin> getUserByUsernameAndRealName(String username, String realName) {
return mapper.getUserByUsernameAndRealName(username, realName); return mapper.getUserByUsernameAndRealName(username,realName);
} }
...@@ -365,9 +371,9 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { ...@@ -365,9 +371,9 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
AppUserLogin appUserLogin = new AppUserLogin(); AppUserLogin appUserLogin = new AppUserLogin();
appUserLogin.setId(userId); appUserLogin.setId(userId);
appUserLogin.setWxOpenid(accountBindDTO.getOpendId()); appUserLogin.setWxOpenid(accountBindDTO.getOpenId());
appUserLogin.setUnionid(accountBindDTO.getUnionId()); appUserLogin.setUnionid(accountBindDTO.getUnionId());
mapper.updateByPrimaryKey(appUserLogin); mapper.updateByPrimaryKeySelective(appUserLogin);
appUserDetailBiz.updateByUserId(accountBindDTO, userId); appUserDetailBiz.updateByUserId(accountBindDTO, userId);
} }
...@@ -388,9 +394,76 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { ...@@ -388,9 +394,76 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
}*/ }*/
AppUserLogin appUserLogin = new AppUserLogin(); AppUserLogin appUserLogin = new AppUserLogin();
appUserLogin.setId(userId); appUserLogin.setId(userId);
appUserLogin.setWxOpenid(accountBindDTO.getOpendId()); appUserLogin.setOpenid(accountBindDTO.getOpenId());
appUserLogin.setUnionid(accountBindDTO.getUnionId()); mapper.updateByPrimaryKeySelective(appUserLogin);
mapper.updateByPrimaryKey(appUserLogin);
appUserDetailBiz.updateByUserId(accountBindDTO, userId); appUserDetailBiz.updateByUserId(accountBindDTO, userId);
} }
public void updateAppuserLogin(AppUserLogin appUserLogin) {
appUserLogin.setUpdatetime(Instant.now().getEpochSecond());
mapper.updateByPrimaryKeySelective(appUserLogin);
}
public List<Integer> findAppuser(String phone, String leaderPhone, String name) {
List<Integer> memberIds = null;
//1.根据leader手机号查询userid
boolean isNoNullLeaderPhone = StringUtils.isNotEmpty(leaderPhone) && leaderPhone.trim().length()>0;
if (isNoNullLeaderPhone) {
List<AppUserLogin> appUserLogins = mapper.selectbyPhones(Arrays.asList(leaderPhone));
Integer leaderId = null;
if (CollectionUtils.isEmpty(appUserLogins)) {
return Collections.EMPTY_LIST;
}
leaderId = appUserLogins.get(0).getId();
//2.根据leader userId查询下级 userid
if (Objects.nonNull(leaderId)) {
List<AppUserRelation> appUserRelationList = appUserRelationBiz.findMemberPageByLeaderId(leaderId);
if(CollectionUtils.isEmpty(appUserRelationList)){
return Collections.EMPTY_LIST;
}
memberIds = appUserRelationList.stream().map(AppUserRelation::getUserId).collect(Collectors.toList());
}
}
List<Integer> userIds = mapper.findAppUser(phone, name, memberIds);
return userIds==null?Collections.EMPTY_LIST:userIds;
}
public List<UserBo> findUserDetailInfo(List<UserBo> userBos) {
Map<String, Integer> userIdAndFacilitateIdMap = userBos.stream().filter(x->Objects.nonNull(x.getFacilitateId())).collect(Collectors.toMap(UserBo::getOrderNo, UserBo::getFacilitateId));
List<Integer> userIdList = userBos.stream().map(UserBo::getUserId).distinct().collect(Collectors.toList());
//查询上级人
List<AppUserRelation> appUserRelationList = appUserRelationBiz.findLeaderByUserIds(userIdList);
Map<Integer, Integer> memberIdAndParentMap = appUserRelationList.stream().collect(Collectors.toMap(AppUserRelation::getUserId, AppUserRelation::getParentId));
List<Integer> uids = new ArrayList<>();
uids.addAll(userIdAndFacilitateIdMap==null?Collections.EMPTY_LIST:userIdList);
uids.addAll(userIdAndFacilitateIdMap==null?Collections.EMPTY_LIST:userIdAndFacilitateIdMap.values());
uids.addAll(memberIdAndParentMap==null?Collections.EMPTY_LIST:memberIdAndParentMap.values());
List<UserBo> userBoList = mapper.selectByUserIds(uids);
Map<Integer, UserBo> userMap = userBoList==null?Collections.EMPTY_MAP:userBoList.stream().collect(Collectors.toMap(UserBo::getUserId, Function.identity()));
if (userMap.isEmpty()){
return Collections.EMPTY_LIST;
}
for (UserBo userBo : userBos) {
UserBo bo = userMap.get(userBo.getUserId());
if (Objects.nonNull(bo)) {
userBo.setPhone(bo.getPhone());
userBo.setName(bo.getName());
}
Integer leaderId = memberIdAndParentMap.get(userBo.getUserId());
UserBo leader = userMap.get(leaderId);
if (Objects.nonNull(leader)) {
userBo.setLeaderName(leader.getName());
userBo.setLeaderPhone(leader.getPhone());
}
UserBo facilitate = userMap.get(userBo.getFacilitateId());
if (Objects.nonNull(facilitate)) {
userBo.setFacilitateName(facilitate.getName());
}
}
return userBos;
}
} }
...@@ -338,7 +338,9 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel ...@@ -338,7 +338,9 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
} }
public List<AppUserRelation> findLeaderByUserIds(List<Integer> userIds) {
List<AppUserRelation> appUserRelationList = mapper.selectByUserIds(userIds);
return appUserRelationList==null?Collections.EMPTY_LIST:appUserRelationList;
} }
}
package com.github.wxiaoqi.security.admin.mapper; package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin; import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.entity.AppUserManage; import com.github.wxiaoqi.security.admin.entity.AppUserManage;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -31,4 +32,8 @@ public interface AppUserLoginMapper extends Mapper<AppUserLogin>, SelectByIdList ...@@ -31,4 +32,8 @@ public interface AppUserLoginMapper extends Mapper<AppUserLogin>, SelectByIdList
List<AppUserLogin> getUserByUsernameAndRealName(@Param("username") String username, @Param("realName")String realName); List<AppUserLogin> getUserByUsernameAndRealName(@Param("username") String username, @Param("realName")String realName);
List<Integer> findAppUser(@Param("phone") String phone,@Param("name") String name,@Param("memberIds") List<Integer> memberIds);
List<UserBo> selectByUserIds(@Param("userIds") List<Integer> uids);
} }
\ No newline at end of file
...@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Param; ...@@ -5,6 +5,7 @@ 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;
import java.util.Set;
/** /**
* 用户关系表 * 用户关系表
...@@ -20,4 +21,6 @@ public interface AppUserRelationMapper extends Mapper<AppUserRelation> { ...@@ -20,4 +21,6 @@ public interface AppUserRelationMapper extends Mapper<AppUserRelation> {
//获取有效的下级 //获取有效的下级
public int countByParentId(@Param("parentId")Integer parentId,@Param("bindTime")Long bindTime); public int countByParentId(@Param("parentId")Integer parentId,@Param("bindTime")Long bindTime);
List<AppUserRelation> selectByUserIds(@Param("userIds") List<Integer> userIds);
} }
package com.github.wxiaoqi.security.admin.rest; package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.*; import com.github.wxiaoqi.security.admin.biz.*;
import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.dto.AccountBindDTO; import com.github.wxiaoqi.security.admin.dto.AccountBindDTO;
import com.github.wxiaoqi.security.admin.entity.*; import com.github.wxiaoqi.security.admin.entity.*;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
...@@ -74,6 +75,9 @@ public class AppUserController extends CommonBaseController{ ...@@ -74,6 +75,9 @@ public class AppUserController extends CommonBaseController{
@Autowired @Autowired
private AppUserAlipayBiz appUserAlipayBiz; private AppUserAlipayBiz appUserAlipayBiz;
@Autowired
private AppUserRelationBiz relationBiz;
@GetMapping("page") @GetMapping("page")
...@@ -158,6 +162,7 @@ public class AppUserController extends CommonBaseController{ ...@@ -158,6 +162,7 @@ public class AppUserController extends CommonBaseController{
if (memberLevel!=null){ if (memberLevel!=null){
String icon=memberLevel.getIcon(); String icon=memberLevel.getIcon();
userDTO.setIcon(icon); userDTO.setIcon(icon);
userDTO.setBigIcon(memberLevel.getBigIcon());
} }
} }
} }
...@@ -165,14 +170,20 @@ public class AppUserController extends CommonBaseController{ ...@@ -165,14 +170,20 @@ public class AppUserController extends CommonBaseController{
if (userPosition!=null&&userPosition.getLevel()>0){ if (userPosition!=null&&userPosition.getLevel()>0){
userDTO.setPositionName(userPosition.getName()); userDTO.setPositionName(userPosition.getName());
} }
AppUserRelation relation=relationBiz.getRelationByIdUserIdAndTime(userid);
Integer parentId=0;
if (relation!=null){
parentId=relation.getParentId();
}
userDTO.setParentId(parentId);
List<AppUserAlipay> appUserAlipays = appUserAlipayBiz.getByUserId(request); List<AppUserAlipay> appUserAlipays = appUserAlipayBiz.getByUserId(request);
long count = appUserAlipays.stream().filter(appUserAlipay -> appUserAlipay.getType() == 1).count(); long count = appUserAlipays.stream().filter(appUserAlipay -> appUserAlipay.getType() == 1).count();
userDTO.setIsBindAliPay(count>0); userDTO.setIsBindAliPay(count>0);
userDTO.setId(id); userDTO.setId(id);
userDTO.setAliPayNickName(userDTO.getIsBindAliPay()?appUserAlipays.get(0).getNickname():""); userDTO.setAliPayNickName(userDTO.getIsBindAliPay()?appUserAlipays.get(0).getNickname():"");
AppUserLogin appUserLogin = appUserLoginBiz.selectById(userid); AppUserLogin appUserLogin = appUserLoginBiz.selectById(userid);
userDTO.setIsBindWx(StringUtils.isEmpty(appUserLogin.getWxOpenid())); userDTO.setIsBindWx(StringUtils.isNotEmpty(appUserLogin.getWxOpenid()));
userDTO.setIsBindQQ(StringUtils.isEmpty(appUserLogin.getOpenid())); userDTO.setIsBindQQ(StringUtils.isNotEmpty(appUserLogin.getOpenid()));
return ObjectRestResponse.succ(userDTO); return ObjectRestResponse.succ(userDTO);
} }
...@@ -211,9 +222,8 @@ public class AppUserController extends CommonBaseController{ ...@@ -211,9 +222,8 @@ public class AppUserController extends CommonBaseController{
*/ */
@PostMapping("/edit") @PostMapping("/edit")
public ObjectRestResponse edit(@RequestBody AppUserVo userVo,HttpServletRequest request)throws Exception { public ObjectRestResponse edit(@RequestBody AppUserVo userVo,HttpServletRequest request)throws Exception {
if(userVo==null||userVo.getId()==null){ String id = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId();
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数为空"); userVo.setUserid(Integer.valueOf(id));
}
userDetailBiz.updUuserInfoById(userVo); userDetailBiz.updUuserInfoById(userVo);
Integer userid=userVo.getUserid(); Integer userid=userVo.getUserid();
if (userid!=null){ if (userid!=null){
...@@ -337,8 +347,10 @@ public class AppUserController extends CommonBaseController{ ...@@ -337,8 +347,10 @@ public class AppUserController extends CommonBaseController{
return appUserLoginBiz.test(); return appUserLoginBiz.test();
} }
@PostMapping("/bind") @PostMapping("/bind")
private ObjectRestResponse accountBinding(@RequestBody AccountBindDTO accountBindDTO,HttpServletRequest request){ private ObjectRestResponse accountBinding(@RequestBody AccountBindDTO accountBindDTO, HttpServletRequest request){
try { try {
IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)); IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request));
return appUserLoginBiz.bindAccount(accountBindDTO, Integer.valueOf(infoFromToken.getId()), request); return appUserLoginBiz.bindAccount(accountBindDTO, Integer.valueOf(infoFromToken.getId()), request);
...@@ -346,4 +358,20 @@ public class AppUserController extends CommonBaseController{ ...@@ -346,4 +358,20 @@ public class AppUserController extends CommonBaseController{
throw new BaseException(ex); throw new BaseException(ex);
} }
} }
@GetMapping("/users")
List<Integer> findAppUserIds(@RequestParam(value = "phone", required = false) String phone,
@RequestParam(value = "leaderPhone", required = false) String leaderPhone,
@RequestParam(value = "name", required = false) String name) {
return appUserLoginBiz.findAppuser(phone, leaderPhone, name);
}
@PostMapping("/users/info")
List<UserBo> findUserDetailByUserBo(@RequestBody(required = false) List<UserBo> userBos) {
return appUserLoginBiz.findUserDetailInfo(userBos);
}
} }
...@@ -82,7 +82,10 @@ ...@@ -82,7 +82,10 @@
m.recent_recharge as recentRecharge, m.recent_recharge as recentRecharge,
m.name as memberName, m.name as memberName,
ul.username as inviter, ul.username as inviter,
aup.name as `positionName` aup.name as `positionName`,
p.nameOfSuperior,
p.username AS superiorMobileNumber,
p.parent_id as parentId
from from
app_user_login l app_user_login l
inner join inner join
...@@ -122,6 +125,23 @@ ...@@ -122,6 +125,23 @@
left join left join
`app_user_position` as aup `app_user_position` as aup
on aup.id = d.position_id on aup.id = d.position_id
left join (
SELECT
r.user_id,
r.parent_id,
l.username,
IFNULL(d.realname,d.nickname) as nameOfSuperior
FROM
app_user_relation r
LEFT JOIN app_user_login l ON r.parent_id = l.id
LEFT JOIN app_user_detail d ON l.id = d.userid
WHERE
l.isdel = 0
AND
r.is_del = 0
) p
on
l.id=p.user_id
where l.isdel = 0 where l.isdel = 0
<if test="mobile !=null and mobile !='' "> <if test="mobile !=null and mobile !='' ">
and l.username like CONCAT('%',#{mobile},'%') and l.username like CONCAT('%',#{mobile},'%')
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<mapper namespace="com.github.wxiaoqi.security.admin.mapper.AppUserLoginMapper"> <mapper namespace="com.github.wxiaoqi.security.admin.mapper.AppUserLoginMapper">
<select id="selectbyPhones" resultType="com.github.wxiaoqi.security.admin.entity.AppUserLogin"> <select id="selectbyPhones" resultType="com.github.wxiaoqi.security.admin.entity.AppUserLogin">
select `id`,`username` from `app_user_login` where `username` in select `id`,`username` from `app_user_login` where `isdel`=0 and `username` in
<foreach collection="phones" item="phone" open="(" close=")" separator=","> <foreach collection="phones" item="phone" open="(" close=")" separator=",">
#{phone} #{phone}
</foreach> </foreach>
...@@ -27,4 +27,32 @@ ...@@ -27,4 +27,32 @@
and d.realname like concat('%',#{realName},'%') and d.realname like concat('%',#{realName},'%')
</if> </if>
</select> </select>
<select id="findAppUser" resultType="integer">
select aul.`id` from (select `id` from `app_user_login` where `isdel`=0
<if test="phone!=null and phone!=''">
and `username`=#{phone}
</if>
<if test="memberIds!=null and memberIds.size()>0">
and `id` IN
<foreach collection="memberIds" item="userId" separator="," open="(" close=")">
#{userId}
</foreach>
</if>
) AS `aul`
INNER JOIN
`app_user_detail` AS `aud` ON aud.userid=aul.id
<if test="name!=null and name!=''">
and ( aud.realname like CONCAT('%',#{name},'%') OR aud.nickname like CONCAT('%',#{name},'%'))
</if>
</select>
<select id="selectByUserIds" resultType="com.github.wxiaoqi.security.admin.bo.UserBo">
select aul.`id` AS `userId`,aul.username AS `phone`,IFNULL(aud.realname,aud.nickname) AS `name` from ( select `id`,`username` from `app_user_login` where `isdel`=0 and `id` IN
<foreach collection="userIds" item="uid" separator="," open="(" close=")">
#{uid}
</foreach>) AS `aul`
INNER JOIN
`app_user_detail` AS `aud` ON aud.userid=aul.id
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -14,4 +14,11 @@ ...@@ -14,4 +14,11 @@
and (is_forever=1 or bind_time>#{bindTime}) and (is_forever=1 or bind_time>#{bindTime})
</if> </if>
</select> </select>
<select id="selectByUserIds" resultType="com.github.wxiaoqi.security.admin.entity.AppUserRelation">
select `user_id`,`parent_id` from `app_user_relation` where `is_del`=0 and `user_id` IN
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
#{userId}
</foreach>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -66,4 +66,18 @@ public class OrderStatistics { ...@@ -66,4 +66,18 @@ public class OrderStatistics {
*/ */
@ApiModelProperty(value = "历史订单补偿总额") @ApiModelProperty(value = "历史订单补偿总额")
private BigDecimal totalOrderCompensation=BigDecimal.ZERO; private BigDecimal totalOrderCompensation=BigDecimal.ZERO;
@Override
public String toString() {
return "OrderStatistics{" +
"totalGmv=" + totalGmv +
", totalSecurityDeposit=" + totalSecurityDeposit +
", totalRefundSecurityDeposit=" + totalRefundSecurityDeposit +
", totalCompensation=" + totalCompensation +
", totalForfeit=" + totalForfeit +
", totalReturnGmv=" + totalReturnGmv +
", totalDefaultMoney=" + totalDefaultMoney +
", totalOrderCompensation=" + totalOrderCompensation +
'}';
}
} }
...@@ -2,17 +2,134 @@ package com.xxfc.platform.order.pojo.account; ...@@ -2,17 +2,134 @@ package com.xxfc.platform.order.pojo.account;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.xxfc.platform.order.entity.OrderAccount; import com.xxfc.platform.order.entity.OrderAccount;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author Administrator
*/
@Data @Data
public class OrderAccountDTO extends OrderAccount { public class OrderAccountDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键")
private Integer id;
/**
* 订单id
*/
@Column(name = "order_id")
@ApiModelProperty(value = "订单id")
private Integer orderId;
/**
* 账款对应的流水号
*/
@Column(name = "trade_no")
@ApiModelProperty(value = "账款对应的流水号")
private String tradeNo;
/**
* 记账时间
*/
@Column(name = "account_time")
@ApiModelProperty(value = "记账时间")
private Long accountTime;
/**
* 记帐类型 101--订单支付;201--取消订单退款;202--全部押金退款;203--部分押金退款;204--剩余押金退款
*/
@Column(name = "account_type")
@ApiModelProperty(value = "记帐类型 101--订单支付;201--取消订单退款;202--全部押金退款;203--部分押金退款;204--剩余押金退款")
private Integer accountType;
/**
* 账款状态 1--成功;2--失败
*/
@Column(name = "account_status")
@ApiModelProperty(value = "账款状态 1--成功;2--失败")
private Integer accountStatus;
/**
* 账款金额
*/
@Column(name = "account_amount")
@ApiModelProperty(value = "账款金额")
private BigDecimal accountAmount;
/**
* 账款说明
*/
@Column(name = "account_desc")
@ApiModelProperty(value = "账款说明")
private String accountDesc;
/**
* 账款详情
*/
@Column(name = "account_detail")
@ApiModelProperty(value = "账款详情")
private String accountDetail;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 原金额
*/
@Column(name = "original_amount")
@ApiModelProperty(value = "原金额")
private BigDecimal originalAmount;
/**
* 扣除金额
*/
@Column(name = "deduct_amount")
@ApiModelProperty(value = "扣除金额")
private BigDecimal deductAmount;
@Column(name = "companyId") @Column(name = "companyId")
private Integer companyId; private Integer companyId;
@Column(name = "oneDay") @Column(name = "oneDay")
private String oneDay; private String oneDay;
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("OrderAccountDTO{");
sb.append("id=").append(id);
sb.append(", orderId=").append(orderId);
sb.append(", tradeNo='").append(tradeNo).append('\'');
sb.append(", accountTime=").append(accountTime);
sb.append(", accountType=").append(accountType);
sb.append(", accountStatus=").append(accountStatus);
sb.append(", accountAmount=").append(accountAmount);
sb.append(", accountDesc='").append(accountDesc).append('\'');
sb.append(", accountDetail='").append(accountDetail).append('\'');
sb.append(", crtTime=").append(crtTime);
sb.append(", originalAmount=").append(originalAmount);
sb.append(", deductAmount=").append(deductAmount);
sb.append(", companyId=").append(companyId);
sb.append(", oneDay='").append(oneDay).append('\'');
sb.append('}');
return sb.toString();
}
} }
package com.xxfc.platform.order.pojo.account; package com.xxfc.platform.order.pojo.account;
import com.xxfc.platform.order.contant.enumerate.DeductionTypeEnum;
import lombok.Data; import lombok.Data;
import org.assertj.core.util.Lists; import org.assertj.core.util.Lists;
...@@ -33,4 +34,19 @@ public class OrderAccountDetail { ...@@ -33,4 +34,19 @@ public class OrderAccountDetail {
public BigDecimal realTotalDeduct() { public BigDecimal realTotalDeduct() {
return originDepositAmount.add(originOrderAmount).subtract(orderAmount).subtract(depositAmount); return originDepositAmount.add(originOrderAmount).subtract(orderAmount).subtract(depositAmount);
} }
public void changeCancelViolate(BigDecimal coverAmount) {
if(null != coverAmount) {
for(OrderAccountDeduction deduction : deductions) {
if(DeductionTypeEnum.VIOLATE_CANCEL.getCode().equals(deduction)) {
//修改取消违约金
//获取差值
BigDecimal diff = coverAmount.subtract(deduction.getAmount());
//修改归还押金金额
setDepositAmount(getDepositAmount().subtract(diff));
deduction.setAmount(coverAmount);
}
}
}
}
} }
package com.xxfc.platform.order.pojo.calculate;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class OrderRefundPriceVO {
BigDecimal refundAmount;
BigDecimal realAmount;
BigDecimal cutAmount;
BigDecimal topAmount;
String refundDesc;
public void setRefundAmount(BigDecimal refundAmount) {
this.refundAmount = refundAmount;
this.cutAmount = realAmount.subtract(refundAmount);
}
}
\ No newline at end of file
package com.xxfc.platform.order.pojo.dto;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/30 15:48
*/
@Data
public class MemberOrderBo {
private Integer id;
private String orderNo;
private Date creatTime;
private Integer status;
private String name;
private BigDecimal goodsAmount;
private Integer userId;
private String userName;
private String phone;
private String leaderName;
private String leaderPhone;
private Integer memberLevel;
/**
* 促成人
*/
@JSONField(serialize = false)
private Integer facilitateId;
private String facilitateName;
private String facilitatePhone;
/**
* 订单金额
*/
private BigDecimal orderAmount;
/**
* 优惠金额
*/
private BigDecimal couponAmount;
private BigDecimal realAmount;
private Long payTime;
private Integer hasPay;
private String desc;
}
package com.xxfc.platform.order.pojo.dto;
import com.github.wxiaoqi.security.common.vo.PageParam;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/30 14:48
*/
@Data
public class MemberOrderFindDTO extends PageParam {
private String orderNo;
private String name;
private String phone;
private Integer state;
private Integer level;
/**
* 下单的开始时间
*/
private Date startOrderTime;
private Date endOrderTime;
/**
* 支付的开始时间
*/
private Long startPayTime;
private Long endPayTime;
private String leaderPhone;
/**
* 促成人的手机号
*/
private String facilitatePhone;
private Boolean isExport;
private List<Integer> userIds;
private Boolean isPay;
private String levelName;
}
package com.xxfc.platform.order.pojo.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/30 14:48
*/
@Data
public class MemberOrderStatisticsBo {
private Integer orderNum;
private BigDecimal totalAmount;
/**
* 钻石
*/
private Integer diamondOrderNum;
private BigDecimal totalDiamondAmount;
/**
* 黄金
*/
private Integer goldOrderNum;
private BigDecimal totalGoldAmount;
/**
* 普通
*/
private Integer generalOrderNum;
private BigDecimal totalGeneralAmount;
}
...@@ -3,6 +3,8 @@ package com.xxfc.platform.order.pojo.order; ...@@ -3,6 +3,8 @@ package com.xxfc.platform.order.pojo.order;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
@Data @Data
public class CancelOrderDTO { public class CancelOrderDTO {
@ApiModelProperty(value = "取消原因") @ApiModelProperty(value = "取消原因")
...@@ -10,4 +12,7 @@ public class CancelOrderDTO { ...@@ -10,4 +12,7 @@ public class CancelOrderDTO {
@ApiModelProperty(value = "app用户id") @ApiModelProperty(value = "app用户id")
private String appUserId; private String appUserId;
@ApiModelProperty(value = "修改违约金")
private BigDecimal changeViolateAmount;
} }
\ No newline at end of file
...@@ -12,9 +12,12 @@ import java.time.format.DateTimeFormatter; ...@@ -12,9 +12,12 @@ import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.DATE_TIME_LINE_FORMATTER;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.YMR_SLASH_FORMATTER;
@Data @Data
public class AddRentVehicleDTO extends AddOrderCommonDTO{ public class AddRentVehicleDTO extends AddOrderCommonDTO{
public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//开始时间 //开始时间
@ApiModelProperty(value = "开始时间") @ApiModelProperty(value = "开始时间")
...@@ -36,6 +39,18 @@ public class AddRentVehicleDTO extends AddOrderCommonDTO{ ...@@ -36,6 +39,18 @@ public class AddRentVehicleDTO extends AddOrderCommonDTO{
@ApiModelProperty(value = "预定目标日期(结束)", hidden = true) @ApiModelProperty(value = "预定目标日期(结束)", hidden = true)
private String bookEndDate; private String bookEndDate;
/**
* 预定目标日期(开始)
*/
@ApiModelProperty(value = "预定目标时间(开始)", hidden = true)
private String bookStartDateTime;
/**
* 预定目标日期(结束)
*/
@ApiModelProperty(value = "预定目标时间(结束)", hidden = true)
private String bookEndDateTime;
//天数 //天数
@ApiModelProperty(value = "天数") @ApiModelProperty(value = "天数")
private Integer dayNum; private Integer dayNum;
...@@ -111,12 +126,14 @@ public class AddRentVehicleDTO extends AddOrderCommonDTO{ ...@@ -111,12 +126,14 @@ public class AddRentVehicleDTO extends AddOrderCommonDTO{
public void setStartTime(Long startTime) { public void setStartTime(Long startTime) {
this.startTime = startTime; this.startTime = startTime;
this.bookStartDate = DEFAULT_DATE_TIME_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(startTime), ZoneOffset.ofHours(8))); this.bookStartDate = YMR_SLASH_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(startTime), ZoneOffset.ofHours(8)));
this.bookStartDateTime = DATE_TIME_LINE_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(startTime), ZoneOffset.ofHours(8)));
} }
public void setEndTime(Long endTime) { public void setEndTime(Long endTime) {
this.endTime = endTime; this.endTime = endTime;
this.bookEndDate = DEFAULT_DATE_TIME_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(endTime), ZoneOffset.ofHours(8))); this.bookEndDate = YMR_SLASH_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(endTime), ZoneOffset.ofHours(8)));
this.bookEndDateTime = DATE_TIME_LINE_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(endTime), ZoneOffset.ofHours(8)));
} }
public void setAccompanyStrs(List<String> accompanyStrs) { public void setAccompanyStrs(List<String> accompanyStrs) {
......
package com.xxfc.platform.order.pojo.vo;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.order.pojo.dto.MemberOrderBo;
import com.xxfc.platform.order.pojo.dto.MemberOrderStatisticsBo;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/30 15:58
*/
@Data
public class MemberOrderPageVo {
private MemberOrderStatisticsBo memberOrderStatisticsBo;
private PageDataVO<MemberOrderBo> memberOrderPage;
}
...@@ -16,6 +16,7 @@ import com.github.wxiaoqi.security.common.exception.BaseException; ...@@ -16,6 +16,7 @@ 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 com.github.wxiaoqi.security.common.util.Query; import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.xxfc.platform.activity.feign.ActivityFeign; import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.inner.OrderCalculateBiz; import com.xxfc.platform.order.biz.inner.OrderCalculateBiz;
...@@ -26,6 +27,8 @@ import com.xxfc.platform.order.mapper.BaseOrderMapper; ...@@ -26,6 +27,8 @@ import com.xxfc.platform.order.mapper.BaseOrderMapper;
import com.xxfc.platform.order.pojo.DedDetailDTO; import com.xxfc.platform.order.pojo.DedDetailDTO;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail; import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import com.xxfc.platform.order.pojo.calculate.InProgressVO; import com.xxfc.platform.order.pojo.calculate.InProgressVO;
import com.xxfc.platform.order.pojo.dto.MemberOrderBo;
import com.xxfc.platform.order.pojo.dto.MemberOrderFindDTO;
import com.xxfc.platform.order.pojo.mq.OrderMQDTO; import com.xxfc.platform.order.pojo.mq.OrderMQDTO;
import com.xxfc.platform.order.pojo.order.OrderListVo; import com.xxfc.platform.order.pojo.order.OrderListVo;
import com.xxfc.platform.order.pojo.order.OrderPageVO; import com.xxfc.platform.order.pojo.order.OrderPageVO;
...@@ -121,7 +124,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -121,7 +124,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
@Autowired @Autowired
OrderCalculateBiz orderCalculateBiz; OrderCalculateBiz orderCalculateBiz;
public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd"); public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
public List<OrderPageVO> pageByParm(Map<String, Object> paramMap) { public List<OrderPageVO> pageByParm(Map<String, Object> paramMap) {
...@@ -141,6 +144,17 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -141,6 +144,17 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
return mapper.getTourList(paramMap); return mapper.getTourList(paramMap);
} }
public PageDataVO<MemberOrderBo> findMemberOrderPage(MemberOrderFindDTO memberOrderFindDTO){
return PageDataVO.pageInfo(memberOrderFindDTO.getPage(),memberOrderFindDTO.getLimit(),()->mapper.findMemberOrders(memberOrderFindDTO));
}
public List<MemberOrderBo> findMemberOrders(MemberOrderFindDTO memberOrderFindDTO) {
return mapper.findMemberOrders(memberOrderFindDTO);
}
// public List<MemberOrderBo>
/** /**
* 获取订单详情 * 获取订单详情
* *
...@@ -226,34 +240,35 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -226,34 +240,35 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
//获取两个日期之间的天数(包含头尾) //获取两个日期之间的天数(包含头尾)
public int getDaysBetweenDateTimeHasStartEnd(DateTime startDay, DateTime endDay) { public int getDaysBetweenDateTimeHasStartEnd(DateTime startDay, DateTime endDay) {
int a = 0; int a = 0;
for (DateTime curDate = startDay; curDate.compareTo(endDay) <= 0; curDate = curDate.plusDays(1)) { for (DateTime curDate = startDay; curDate.compareTo(endDay) <= 0; curDate = curDate.plusHours(1)) {
a++; a++;
} }
return a; return a;
} }
public static void main(String[] args) { // public static void main(String[] args) {
DateTime dateTime = DateTime.parse("2019-09-20", DEFAULT_DATE_TIME_FORMATTER); // DateTime dateTime = DateTime.parse("2019-09-20 12:00:00", DEFAULT_DATE_TIME_FORMATTER);
DateTime dateTime1 = DateTime.parse("2019-09-22", DEFAULT_DATE_TIME_FORMATTER); // DateTime dateTime1 = DateTime.parse("2019-09-22 12:00:00", DEFAULT_DATE_TIME_FORMATTER);
BaseOrderBiz baseOrderBiz = new BaseOrderBiz(); // BaseOrderBiz baseOrderBiz = new BaseOrderBiz();
int a = baseOrderBiz.getDaysBetweenDateTimeHasStartEnd(dateTime,dateTime1) -1 ; // OrderCalculateBiz orderCalculateBiz = new OrderCalculateBiz();
System.out.println(a); // int a = orderCalculateBiz.getIncludeDays(1572246524350l,1572332924000l);
} // System.out.println(a);
// }
public void updateCrossRefund(OrderPageVO orderPageVO) { public void updateCrossRefund(OrderPageVO orderPageVO) {
//计算延期费用 //计算延期费用
DedDetailDTO dedDetailDTO = new DedDetailDTO(); DedDetailDTO dedDetailDTO = new DedDetailDTO();
//提前还车,结束时间大于当前时间 //提前还车,结束时间大于当前时间
DateTime nowTime = DateTime.parse(DateTime.now().toString(DEFAULT_DATE_TIME_FORMATTER), DEFAULT_DATE_TIME_FORMATTER); Long nowTime = System.currentTimeMillis();
DateTime endTime = DateTime.parse(new DateTime(orderPageVO.getOrderRentVehicleDetail().getEndTime()).toString(DEFAULT_DATE_TIME_FORMATTER), DEFAULT_DATE_TIME_FORMATTER); Long endTime = orderPageVO.getOrderRentVehicleDetail().getEndTime();
DateTime startTime = DateTime.parse(new DateTime(orderPageVO.getOrderRentVehicleDetail().getStartTime()).toString(DEFAULT_DATE_TIME_FORMATTER), DEFAULT_DATE_TIME_FORMATTER); Long startTime = orderPageVO.getOrderRentVehicleDetail().getStartTime();
//设置使用天数 //设置使用天数
int userUsedDay = getDaysBetweenDateTimeHasStartEnd(startTime, nowTime); int userUsedDay = orderCalculateBiz.getIncludeDays(startTime, nowTime);
orderPageVO.getOrderRentVehicleDetail().setUsedDay(userUsedDay); orderPageVO.getOrderRentVehicleDetail().setUsedDay(userUsedDay);
orderRentVehicleBiz.updateSelectiveById(orderPageVO.getOrderRentVehicleDetail()); orderRentVehicleBiz.updateSelectiveById(orderPageVO.getOrderRentVehicleDetail());
//实际预定的天数 //实际预定的天数
int actualDay = getDaysBetweenDateTimeHasStartEnd(startTime, endTime); int actualDay = orderCalculateBiz.getIncludeDays(startTime, endTime);
Integer orderId = orderPageVO.getId(); Integer orderId = orderPageVO.getId();
List<OrderItem> items = orderItemBiz.selectList(new OrderItem() {{ List<OrderItem> items = orderItemBiz.selectList(new OrderItem() {{
setOrderId(orderId); setOrderId(orderId);
...@@ -272,15 +287,15 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -272,15 +287,15 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
/** /**
* 提前还车 * 提前还车
*/ */
if (getDaysBetweenDateTimeHasStartEnd(endTime, nowTime) < 1) { if (userUsedDay - actualDay < 0) {
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
//提前的天数, 当天就算使用一天 //提前的天数, 当天就算使用一天
int noUsedDay = getDaysBetweenDateTimeHasStartEnd(nowTime, endTime) - 1; int noUsedDay = actualDay - userUsedDay;
//退还未使用的天数,或者金额,扣除违约金,实际未使用天数的金额,最多3000元 //退还未使用的天数,或者金额,扣除违约金,实际未使用天数的金额,最多3000元
// InProgressVO inProgressVO = new InProgressVO(); // InProgressVO inProgressVO = new InProgressVO();
// inProgressVO.setViolateAmount(new BigDecimal(200)); // inProgressVO.setViolateAmount(new BigDecimal(200));
// inProgressVO.setExtraAmount(new BigDecimal(200)); // inProgressVO.setExtraAmount(new BigDecimal(200));
InProgressVO inProgressVO = orderCalculateBiz.inProgressCalculate(orderPageVO, actualDay - noUsedDay); InProgressVO inProgressVO = orderCalculateBiz.inProgressCalculate(orderPageVO, userUsedDay);
if (inProgressVO != null) { if (inProgressVO != null) {
//消费超额金 //消费超额金
if(inProgressVO.getExtraAmount() != null) { if(inProgressVO.getExtraAmount() != null) {
...@@ -297,11 +312,11 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -297,11 +312,11 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
/** /**
* 延期还车 * 延期还车
*/ */
} else if (getDaysBetweenDateTimeHasStartEnd(endTime, nowTime) > 1) { } else if (userUsedDay - actualDay > 0) {
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("违约金( ¥"); stringBuilder.append("违约金( ¥");
//延期的天数, 延期违约金是延期天数*200% //延期的天数, 延期违约金是延期天数*200%
int extraUsedDay = getDaysBetweenDateTimeHasStartEnd(endTime, nowTime) - 1; int extraUsedDay = userUsedDay - actualDay;
if(extraUsedDay > 0) { if(extraUsedDay > 0) {
stringBuilder.append(amount); stringBuilder.append(amount);
stringBuilder.append(" x "); stringBuilder.append(" x ");
...@@ -691,6 +706,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -691,6 +706,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
} }
} }
// /** // /**
// * 更新(不成功抛异常) // * 更新(不成功抛异常)
// * @param baseOrder // * @param baseOrder
...@@ -763,6 +780,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -763,6 +780,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
return userFeign; return userFeign;
} }
/** /**
* 订单查询类 * 订单查询类
*/ */
......
...@@ -6,7 +6,6 @@ import com.google.common.collect.Lists; ...@@ -6,7 +6,6 @@ import com.google.common.collect.Lists;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.DailyMembersOrderStatistics; import com.xxfc.platform.order.entity.DailyMembersOrderStatistics;
import com.xxfc.platform.order.entity.MembersOrder; import com.xxfc.platform.order.entity.MembersOrder;
import com.xxfc.platform.order.entity.OrderAccount;
import com.xxfc.platform.order.entity.OrderStatistics; import com.xxfc.platform.order.entity.OrderStatistics;
import com.xxfc.platform.order.mapper.DailyMembersOrderStatisticsMapper; import com.xxfc.platform.order.mapper.DailyMembersOrderStatisticsMapper;
import com.xxfc.platform.order.pojo.OrderQuery; import com.xxfc.platform.order.pojo.OrderQuery;
...@@ -17,7 +16,6 @@ import lombok.extern.slf4j.Slf4j; ...@@ -17,7 +16,6 @@ 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.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
...@@ -26,6 +24,7 @@ import tk.mybatis.mapper.weekend.WeekendSqls; ...@@ -26,6 +24,7 @@ import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -81,9 +80,12 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta ...@@ -81,9 +80,12 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
public DailyMembersOrderStatistics statistics(Term term) { public DailyMembersOrderStatistics statistics(Term term) {
List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(term); List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(term);
log.error("Members:accountList:"+accountList);
if (CollectionUtils.isNotEmpty(accountList)) { if (CollectionUtils.isNotEmpty(accountList)) {
DailyMembersOrderStatistics orderStatistics = new DailyMembersOrderStatistics(); DailyMembersOrderStatistics orderStatistics = new DailyMembersOrderStatistics();
ArrayList<OrderAccountDetail> orderAccountDetails = getOrderAccountDetail(accountList); ArrayList<OrderAccountDetail> orderAccountDetails = getOrderAccountDetail(accountList);
log.error("Members:orderAccountDetails:"+orderAccountDetails);
if (CollectionUtils.isNotEmpty(orderAccountDetails)) { if (CollectionUtils.isNotEmpty(orderAccountDetails)) {
//获取订单总额 //获取订单总额
BigDecimal gmv = getOrderAmountTotal(orderAccountDetails); BigDecimal gmv = getOrderAmountTotal(orderAccountDetails);
...@@ -134,15 +136,15 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta ...@@ -134,15 +136,15 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
*/ */
private ArrayList<OrderAccountDetail> getOrderAccountDetail(List<OrderAccountDTO> orderAccountDTOS) { private ArrayList<OrderAccountDetail> getOrderAccountDetail(List<OrderAccountDTO> orderAccountDTOS) {
ArrayList<OrderAccountDetail> arrayList = Lists.newArrayList(); ArrayList<OrderAccountDetail> arrayList = Lists.newArrayList();
List<OrderAccountDetail> oad = Collections.synchronizedList(arrayList);
orderAccountDTOS.parallelStream() orderAccountDTOS.parallelStream()
.map(OrderAccount::getAccountDetail) .map(OrderAccountDTO::getAccountDetail)
.forEach(detail -> { .forEach(detail -> {
if (StringUtils.isNotBlank(detail)) { if (StringUtils.isNotBlank(detail)) {
arrayList.add(JSONUtil.toBean(detail, OrderAccountDetail.class)); oad.add(JSONUtil.toBean(detail, OrderAccountDetail.class));
} }
}); });
return new ArrayList<OrderAccountDetail>(oad);
return arrayList;
} }
@Override @Override
......
...@@ -101,6 +101,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -101,6 +101,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
public List<DailyTravelOrderStatistics> getDailyTravelOrderStatistics(Term term) { public List<DailyTravelOrderStatistics> getDailyTravelOrderStatistics(Term term) {
//获取当天所有订单账目 //获取当天所有订单账目
List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(term); List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(term);
log.error("accountList:"+accountList);
if (CollectionUtils.isEmpty(accountList)) { if (CollectionUtils.isEmpty(accountList)) {
return null; return null;
} }
...@@ -220,8 +221,8 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -220,8 +221,8 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
*/ */
private ArrayList<OrderAccountDetail> getOrderAccountDetail(List<OrderAccountDTO> orderAccountDTOS) { private ArrayList<OrderAccountDetail> getOrderAccountDetail(List<OrderAccountDTO> orderAccountDTOS) {
ArrayList<OrderAccountDetail> arrayList = Lists.newArrayList(); ArrayList<OrderAccountDetail> arrayList = Lists.newArrayList();
orderAccountDTOS.parallelStream() orderAccountDTOS.stream()
.map(OrderAccount::getAccountDetail) .map(OrderAccountDTO::getAccountDetail)
.forEach(detail -> { .forEach(detail -> {
if (StringUtils.isNotBlank(detail)) { if (StringUtils.isNotBlank(detail)) {
arrayList.add(JSONUtil.toBean(detail, OrderAccountDetail.class)); arrayList.add(JSONUtil.toBean(detail, OrderAccountDetail.class));
...@@ -252,7 +253,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -252,7 +253,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
*/ */
private List<OrderAccountDeduction> gettDeductions(ArrayList<OrderAccountDetail> orderAccountDetails) { private List<OrderAccountDeduction> gettDeductions(ArrayList<OrderAccountDetail> orderAccountDetails) {
ArrayList<OrderAccountDeduction> arrayList = Lists.newArrayList(); ArrayList<OrderAccountDeduction> arrayList = Lists.newArrayList();
orderAccountDetails.parallelStream().map(OrderAccountDetail::getDeductions).forEach(e->arrayList.addAll(e)); orderAccountDetails.stream().map(OrderAccountDetail::getDeductions).forEach(e->arrayList.addAll(e));
return arrayList; return arrayList;
} }
......
...@@ -67,6 +67,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -67,6 +67,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
* @return * @return
*/ */
private BigDecimal get(List<OrderAccountDeduction> list, List<Integer> types) { private BigDecimal get(List<OrderAccountDeduction> list, List<Integer> types) {
return list.parallelStream() return list.parallelStream()
.filter(el -> types.contains(el.getType())) .filter(el -> types.contains(el.getType()))
.map(OrderAccountDeduction::getAmount) .map(OrderAccountDeduction::getAmount)
...@@ -150,6 +151,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -150,6 +151,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
public List<DailyVehicleOrderStatistics> getDailyVehicleOrderRecord(Term term) { public List<DailyVehicleOrderStatistics> getDailyVehicleOrderRecord(Term term) {
//获取当天所有订单账目 //获取当天所有订单账目
List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(term); List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(term);
log.error("record:"+accountList);
if (CollectionUtils.isEmpty(accountList)) { if (CollectionUtils.isEmpty(accountList)) {
return null; return null;
} }
...@@ -243,12 +245,13 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -243,12 +245,13 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
//获取明细集合 //获取明细集合
ArrayList<OrderAccountDeduction> orderAccountDeductions = Lists.newArrayList(); ArrayList<OrderAccountDeduction> orderAccountDeductions = Lists.newArrayList();
orderAccountDetail List<OrderAccountDeduction> oad = Collections.synchronizedList(orderAccountDeductions);
orderAccountDetail
.parallelStream() .parallelStream()
.map(OrderAccountDetail::getDeductions) .map(OrderAccountDetail::getDeductions)
.forEach(list->orderAccountDeductions.addAll(list)); .forEach(list->oad.addAll(list));
//获取订单实际款 //获取订单实际款
BigDecimal actual = orderAccountDeductions BigDecimal actual = oad
.parallelStream() .parallelStream()
.filter(o -> DeductionTypeEnum.CONSUME.getCode().equals(o.getType())) .filter(o -> DeductionTypeEnum.CONSUME.getCode().equals(o.getType()))
.map(OrderAccountDeduction::getAmount) .map(OrderAccountDeduction::getAmount)
...@@ -267,13 +270,21 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -267,13 +270,21 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
private void refundAndDeductions(Map<Integer, List<OrderAccountDTO>> map, DailyVehicleOrderStatistics orderStatistics) { private void refundAndDeductions(Map<Integer, List<OrderAccountDTO>> map, DailyVehicleOrderStatistics orderStatistics) {
ArrayList<OrderAccountDTO> arrayList = Lists.newArrayList(); ArrayList<OrderAccountDTO> arrayList = Lists.newArrayList();
for (Integer key : map.keySet()) { for (Integer key : map.keySet()) {
if (!key.equals(AccountTypeEnum.IN_ORDER_PAY.getCode())) { if (!key.equals(AccountTypeEnum.IN_ORDER_PAY.getCode())) {
List<OrderAccountDTO> orderAccountDTOS = map.get(key);
log.error(orderAccountDTOS.toString());
arrayList.addAll(map.get(key)); arrayList.addAll(map.get(key));
} }
} }
if (CollectionUtils.isNotEmpty(arrayList)) { if (CollectionUtils.isNotEmpty(arrayList)) {
ArrayList<OrderAccountDetail> orderAccountDetail = getOrderAccountDetail(arrayList); ArrayList<OrderAccountDetail> orderAccountDetail = getOrderAccountDetail(arrayList);
if (CollectionUtils.isNotEmpty(orderAccountDetail)) { if (CollectionUtils.isNotEmpty(orderAccountDetail)) {
log.error( "orderAccountDetail"+orderAccountDetail);
//获取退还订总额 //获取退还订总额
BigDecimal returnGmv = getOrderAmountTotal(orderAccountDetail); BigDecimal returnGmv = getOrderAmountTotal(orderAccountDetail);
orderStatistics.setReturnGmv(returnGmv); orderStatistics.setReturnGmv(returnGmv);
...@@ -318,6 +329,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -318,6 +329,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
if (CollectionUtils.isNotEmpty(orderAccountDTOS)) { if (CollectionUtils.isNotEmpty(orderAccountDTOS)) {
ArrayList<OrderAccountDetail> orderAccountDetails = getOrderAccountDetail(orderAccountDTOS); ArrayList<OrderAccountDetail> orderAccountDetails = getOrderAccountDetail(orderAccountDTOS);
if (CollectionUtils.isNotEmpty(orderAccountDetails)) { if (CollectionUtils.isNotEmpty(orderAccountDetails)) {
System.out.println(orderAccountDetails);
//获取订单总额 //获取订单总额
BigDecimal gmv = getOrderAmountTotal(orderAccountDetails); BigDecimal gmv = getOrderAmountTotal(orderAccountDetails);
orderStatistics.setGmv(gmv); orderStatistics.setGmv(gmv);
...@@ -350,9 +362,10 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -350,9 +362,10 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
* @return * @return
*/ */
private BigDecimal getOrderAmountTotal(ArrayList<OrderAccountDetail> orderAccountDetails) { private BigDecimal getOrderAmountTotal(ArrayList<OrderAccountDetail> orderAccountDetails) {
return orderAccountDetails.stream() BigDecimal reduce = orderAccountDetails.stream()
.map(OrderAccountDetail::getOrderAmount) .map(OrderAccountDetail::getOrderAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add); .reduce(BigDecimal.ZERO, BigDecimal::add);
return reduce;
} }
/** /**
...@@ -363,7 +376,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -363,7 +376,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
*/ */
private List<OrderAccountDeduction> gettDeductions(ArrayList<OrderAccountDetail> orderAccountDetails) { private List<OrderAccountDeduction> gettDeductions(ArrayList<OrderAccountDetail> orderAccountDetails) {
ArrayList<OrderAccountDeduction> arrayList = Lists.newArrayList(); ArrayList<OrderAccountDeduction> arrayList = Lists.newArrayList();
orderAccountDetails.parallelStream().map(OrderAccountDetail::getDeductions).forEach(e -> arrayList.addAll(e)); orderAccountDetails.stream().map(OrderAccountDetail::getDeductions).forEach(e -> arrayList.addAll(e));
return arrayList; return arrayList;
} }
...@@ -375,8 +388,8 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -375,8 +388,8 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
*/ */
private ArrayList<OrderAccountDetail> getOrderAccountDetail(List<OrderAccountDTO> orderAccountDTOS) { private ArrayList<OrderAccountDetail> getOrderAccountDetail(List<OrderAccountDTO> orderAccountDTOS) {
ArrayList<OrderAccountDetail> arrayList = Lists.newArrayList(); ArrayList<OrderAccountDetail> arrayList = Lists.newArrayList();
orderAccountDTOS.parallelStream() orderAccountDTOS.stream()
.map(OrderAccount::getAccountDetail) .map(OrderAccountDTO::getAccountDetail)
.forEach(detail -> { .forEach(detail -> {
if (StringUtils.isNotBlank(detail)) { if (StringUtils.isNotBlank(detail)) {
arrayList.add(JSONUtil.toBean(detail, OrderAccountDetail.class)); arrayList.add(JSONUtil.toBean(detail, OrderAccountDetail.class));
......
...@@ -91,11 +91,18 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> { ...@@ -91,11 +91,18 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
/** /**
* 租车退款流程 * 租车退款流程
* @param baseOrder * @param baseOrder
* @param orderDeductSource 主要商品(租车费用、旅游费用等) * @param orderDeductSource 订单款扣除费用源,主要商品(租车费用、旅游费用等)
* @param timeLag 与开始时间的时间差 * @param timeLag 与开始时间的时间差
* @param dicParentKey * @param dicParentKey 计算违约金的dickey
* @param depositAmount 押金款
* @param depositDeductSource 押金款扣除费用源
* @param oad 账单信息
* @param topAmount 扣款封顶值
* @param orderViolateCoverAmount 订单违约金覆盖值
* @param depositViolateCoverAmount 押金违约金覆盖值
*/ */
public BigDecimal rentRefundProcessCancel(BaseOrder baseOrder, BigDecimal orderDeductSource, Long timeLag, String dicParentKey, BigDecimal depositAmount, BigDecimal depositDeductSource, OrderAccountDetail oad, BigDecimal topAmount) { public BigDecimal rentRefundProcessCancel(BaseOrder baseOrder, BigDecimal orderDeductSource, Long timeLag, String dicParentKey, BigDecimal depositAmount, BigDecimal depositDeductSource
, OrderAccountDetail oad, BigDecimal topAmount, BigDecimal orderViolateCoverAmount, BigDecimal depositViolateCoverAmount) {
//原来退款 和 最终退款 //原来退款 和 最终退款
BigDecimal originalRefundAmount = BigDecimal.ZERO; BigDecimal originalRefundAmount = BigDecimal.ZERO;
BigDecimal refundAmount = BigDecimal.ZERO; BigDecimal refundAmount = BigDecimal.ZERO;
...@@ -113,6 +120,9 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> { ...@@ -113,6 +120,9 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
if(null != orderDeductSource && BigDecimal.ZERO.compareTo(orderDeductSource) < 0) { if(null != orderDeductSource && BigDecimal.ZERO.compareTo(orderDeductSource) < 0) {
BigDecimal orderDeductAmount = calculateDeduction(orderDeductSource, timeLag, dicParentKey, orderRefundDescBuilder); BigDecimal orderDeductAmount = calculateDeduction(orderDeductSource, timeLag, dicParentKey, orderRefundDescBuilder);
orderDeductAmount = orderDeductAmount.setScale(2, RoundingMode.HALF_UP); orderDeductAmount = orderDeductAmount.setScale(2, RoundingMode.HALF_UP);
if(null != orderViolateCoverAmount) {
orderDeductAmount = orderViolateCoverAmount;
}
if(topAmount.compareTo(orderDeductAmount) > 0) { if(topAmount.compareTo(orderDeductAmount) > 0) {
totalDeductAmount = totalDeductAmount.add(orderDeductAmount); totalDeductAmount = totalDeductAmount.add(orderDeductAmount);
topAmount = topAmount.subtract(orderDeductAmount); topAmount = topAmount.subtract(orderDeductAmount);
...@@ -143,6 +153,9 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> { ...@@ -143,6 +153,9 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
//通过原扣除款 计算剩余款 //通过原扣除款 计算剩余款
BigDecimal depositDeductAmount = calculateDeduction(depositDeductSource, timeLag, dicParentKey, depositRefundDescBuilder); BigDecimal depositDeductAmount = calculateDeduction(depositDeductSource, timeLag, dicParentKey, depositRefundDescBuilder);
depositDeductAmount = depositDeductAmount.setScale(2, RoundingMode.HALF_UP); depositDeductAmount = depositDeductAmount.setScale(2, RoundingMode.HALF_UP);
if(null != orderViolateCoverAmount) {
depositDeductAmount = orderViolateCoverAmount;
}
if(topAmount.compareTo(depositDeductAmount) > 0) { if(topAmount.compareTo(depositDeductAmount) > 0) {
totalDeductAmount = totalDeductAmount.add(depositDeductAmount); totalDeductAmount = totalDeductAmount.add(depositDeductAmount);
topAmount = topAmount.subtract(depositDeductAmount); topAmount = topAmount.subtract(depositDeductAmount);
...@@ -183,13 +196,13 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> { ...@@ -183,13 +196,13 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
/** /**
* 退款子流程 * 退款子流程
* @param baseOrder * @param baseOrder 基础订单信息
* @param refundDesc 退款描述 * @param refundDesc 退款描述
* @param originalRefundAmount 原金额 * @param originalRefundAmount 原退款金额
* @param refundAmount 退款金额 * @param refundAmount 退款金额
* @param refundType 退款类型 * @param refundType 退款类型
* @param refundStatus 退款状态 * @param refundStatus 退款状态
* @param oad 出入账详情 * @param oad 账单信息
*/ */
public void refundSubProcess(BaseOrder baseOrder, String refundDesc, BigDecimal originalRefundAmount, BigDecimal refundAmount, Integer refundType, Integer refundStatus, OrderAccountDetail oad) { public void refundSubProcess(BaseOrder baseOrder, String refundDesc, BigDecimal originalRefundAmount, BigDecimal refundAmount, Integer refundType, Integer refundStatus, OrderAccountDetail oad) {
String refundTradeNo = null; String refundTradeNo = null;
......
...@@ -207,7 +207,6 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp ...@@ -207,7 +207,6 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
//调用车辆管理的出车还车 //调用车辆管理的出车还车
//出车 //出车
if (orderVehicleCrosstownDto.getType() == CrosstownTypeEnum.DEPARTURE.getCode()) { //交车 if (orderVehicleCrosstownDto.getType() == CrosstownTypeEnum.DEPARTURE.getCode()) { //交车
VehicleDepartureVo vehicleDepartureVo = new VehicleDepartureVo(); VehicleDepartureVo vehicleDepartureVo = new VehicleDepartureVo();
vehicleDepartureVo.setVehicleId(orderRentVehicleDetail.getVehicleId()); vehicleDepartureVo.setVehicleId(orderRentVehicleDetail.getVehicleId());
vehicleDepartureVo.setDepartureBranchCompanyId(orderRentVehicleDetail.getStartCompanyId()); vehicleDepartureVo.setDepartureBranchCompanyId(orderRentVehicleDetail.getStartCompanyId());
...@@ -223,10 +222,14 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp ...@@ -223,10 +222,14 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
vehicleDepartureVo.setUse("用户租车"); vehicleDepartureVo.setUse("用户租车");
vehicleDepartureVo.setBookRecordId(orderRentVehicleDetail.getBookRecordId()); vehicleDepartureVo.setBookRecordId(orderRentVehicleDetail.getBookRecordId());
vehicleDepartureVo.setCheckMan(userDTO.getName()); vehicleDepartureVo.setCheckMan(userDTO.getName());
vehicleDepartureVo.setCheckManTel(orderVehicleCrosstownDto.getLicensePhone()); if(StringUtils.isNotBlank(orderVehicleCrosstownDto.getLicensePhone())) {
vehicleDepartureVo.setCheckManTel(orderVehicleCrosstownDto.getLicensePhone());
} else {
vehicleDepartureVo.setCheckManTel("13656235623");
}
try { try {
RestResponse restResponse = vehicleFeign.departureBySmall(vehicleDepartureVo); RestResponse restResponse = vehicleFeign.departureBySmall(vehicleDepartureVo);
log.info("返回信息: " + restResponse.toString()); log.error("返回信息: " + restResponse.toString());
} catch (Exception e) { } catch (Exception e) {
return ObjectRestResponse.createFailedResult(1001, e.getMessage()); return ObjectRestResponse.createFailedResult(1001, e.getMessage());
} }
...@@ -236,6 +239,7 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp ...@@ -236,6 +239,7 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
vehicleArrivalVo.setArrivalBranchCompanyId(userDTO.getCompanyId()); vehicleArrivalVo.setArrivalBranchCompanyId(userDTO.getCompanyId());
vehicleArrivalVo.setMileage(orderVehicleCrosstownDto.getMileage()); vehicleArrivalVo.setMileage(orderVehicleCrosstownDto.getMileage());
vehicleArrivalVo.setRecycleMan(userDTO.getName()); vehicleArrivalVo.setRecycleMan(userDTO.getName());
vehicleArrivalVo.setRecycleManTel("13656235623");
vehicleArrivalVo.setBookRecordId(orderRentVehicleDetail.getBookRecordId()); vehicleArrivalVo.setBookRecordId(orderRentVehicleDetail.getBookRecordId());
if (appUserDTO != null) { if (appUserDTO != null) {
vehicleArrivalVo.setRecycleManTel(appUserDTO.getUsername()); vehicleArrivalVo.setRecycleManTel(appUserDTO.getUsername());
......
...@@ -7,14 +7,17 @@ import cn.hutool.core.date.DateUtil; ...@@ -7,14 +7,17 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.common.constant.CommonConstants;
import com.xxfc.platform.activity.entity.Coupon; import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.feign.ActivityFeign; import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.app.feign.ConfigFeign; import com.xxfc.platform.app.feign.ConfigFeign;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.biz.OrderAccountBiz; import com.xxfc.platform.order.biz.OrderAccountBiz;
import com.xxfc.platform.order.biz.OrderItemBiz; import com.xxfc.platform.order.biz.OrderItemBiz;
import com.xxfc.platform.order.contant.enumerate.DeductionTypeEnum; import com.xxfc.platform.order.contant.enumerate.DeductionTypeEnum;
import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum; import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum; import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
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.OrderItem; import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail; import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
...@@ -22,19 +25,29 @@ import com.xxfc.platform.order.pojo.account.OrderAccountDeduction; ...@@ -22,19 +25,29 @@ import com.xxfc.platform.order.pojo.account.OrderAccountDeduction;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail; import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import com.xxfc.platform.order.pojo.calculate.InProgressVO; import com.xxfc.platform.order.pojo.calculate.InProgressVO;
import com.xxfc.platform.order.pojo.order.VehicleItemDTO; import com.xxfc.platform.order.pojo.order.VehicleItemDTO;
import com.xxfc.platform.order.pojo.calculate.OrderRefundPriceVO;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.entity.Dictionary;
import com.xxfc.platform.universal.feign.ThirdFeign; import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.vehicle.feign.VehicleFeign; import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO; import com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO;
import com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO; import com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Lists; import org.assertj.core.util.Lists;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Collection; import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.universal.constant.DictionaryKey.*;
/** /**
* 订单退款记录表 * 订单退款记录表
...@@ -68,6 +81,9 @@ public class OrderCalculateBiz { ...@@ -68,6 +81,9 @@ public class OrderCalculateBiz {
@Autowired @Autowired
OrderAccountBiz orderAccountBiz; OrderAccountBiz orderAccountBiz;
@Autowired
BaseOrderBiz baseOrderBiz;
public InProgressVO inProgressCalculate(BaseOrder baseOrder, VehicleItemDTO vehicleItemDTO, Integer freeDays, Integer useDays, OrderAccountDetail oad, Boolean isCancel) { public InProgressVO inProgressCalculate(BaseOrder baseOrder, VehicleItemDTO vehicleItemDTO, Integer freeDays, Integer useDays, OrderAccountDetail oad, Boolean isCancel) {
BigDecimal refundAmount = BigDecimal.ZERO; BigDecimal refundAmount = BigDecimal.ZERO;
BigDecimal consumeAmount = BigDecimal.ZERO; BigDecimal consumeAmount = BigDecimal.ZERO;
...@@ -263,4 +279,124 @@ public class OrderCalculateBiz { ...@@ -263,4 +279,124 @@ public class OrderCalculateBiz {
oad.setOriginOrderAmount(baseOrder.getGoodsAmount().subtract(baseOrder.getCouponAmount())); oad.setOriginOrderAmount(baseOrder.getGoodsAmount().subtract(baseOrder.getCouponAmount()));
return inProgressVO; return inProgressVO;
} }
/**
* 计算包含多少天
* @param startLong
* @param endLong
* @return
*/
public Integer getIncludeDays(Long startLong, Long endLong) {
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
Long hourLong = (60L * 60L * 1000L);
Long dayLong = hourLong * 24;
Long bufferLong = Long.valueOf(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.RENT_TIME_BUFFER).getDetail()) * hourLong;
//计算:使用天数 当前时间 - 开始时间的0时0分0秒
Long bookTimeLag = endLong - startLong;
log.info("bookTimeLag {}", new BigDecimal(bookTimeLag + ""));
log.info("divide {}", new BigDecimal((24 * 60 * 60 * 1000)+ ""));
Integer bookDays = new BigDecimal(bookTimeLag + "").divide(new BigDecimal(dayLong+ ""), 0, RoundingMode.DOWN).intValue();
Long excess = bookTimeLag%dayLong;
if(excess > bufferLong) {
bookDays += 1;
}
if(0 == bookDays) {
bookDays = 1;
}
return bookDays;
}
public OrderRefundPriceVO getPriceCalculate (String no, OrderPageVO orderPageVO) {
//根据no 查订单
OrderTypeEnum orderTypeEnum = OrderTypeEnum.get(orderPageVO.getType());
BigDecimal totalRefundAmount = BigDecimal.ZERO;
BigDecimal totalDeductAmount = BigDecimal.ZERO;
StringBuilder refundDescBuilder = new StringBuilder("");
String refundDesc = "";
InProgressVO inProgressVO = new InProgressVO();
BigDecimal topAmount = BigDecimal.ZERO;
switch (orderTypeEnum) {
case RENT_VEHICLE:
DateTime nowTime = DateTime.parse(DateTime.now().toString(CommonConstants.YMR_SLASH_FORMATTER_JODA), CommonConstants.YMR_SLASH_FORMATTER_JODA);
DateTime startTime = DateTime.parse(new DateTime(orderPageVO.getOrderRentVehicleDetail().getStartTime()).toString(CommonConstants.YMR_SLASH_FORMATTER_JODA), CommonConstants.YMR_SLASH_FORMATTER_JODA);
DateTime endTime = DateTime.parse(new DateTime(orderPageVO.getOrderRentVehicleDetail().getEndTime()).toString(CommonConstants.YMR_SLASH_FORMATTER_JODA), CommonConstants.YMR_SLASH_FORMATTER_JODA);
Long timeLag = orderPageVO.getOrderRentVehicleDetail().getStartTime() - System.currentTimeMillis();
OrderItem vehicleItem = orderItemBiz.selectOne(new OrderItem(){{
setType(ItemTypeEnum.VEHICLE_MODEL.getCode());
setOrderId(orderPageVO.getId());
}});
topAmount = vehicleItem.getUnitPrice().multiply(new BigDecimal(2+ ""));
if(timeLag < 0 ) {
OrderAccountDetail oad = new OrderAccountDetail();
Integer freeDays = (null == vehicleItem.getCutNum())?0 :vehicleItem.getCutNum();
//inProgressVO = inProgressCalculate(orderPageVO, vehicleItem, freeDays, baseOrderBiz.getDaysBetweenDateTime(startTime, nowTime), new OrderAccountDetail(), Boolean.FALSE);
totalDeductAmount = oad.realTotalDeduct();
totalRefundAmount = oad.getOrderAmount().add(oad.getDepositAmount());
refundDesc = inProgressVO.getViolateDesc();
}else {
String key = RENT_REFUND;
BigDecimal deductionAmount = orderAccountBiz.calculateDeduction(vehicleItem.getBuyAmount()
, orderPageVO.getOrderRentVehicleDetail().getStartTime() - System.currentTimeMillis()
, DictionaryKey.APP_ORDER+ "_"+ key
, refundDescBuilder);
totalDeductAmount = deductionAmount;
totalRefundAmount = orderPageVO.getRealAmount().subtract(deductionAmount);
refundDesc = refundDescBuilder.toString();
}
break;
case TOUR:
//判断是省内还是省外
String key = TOUR_IN_REFUND;
if(SYS_TRUE.equals(orderPageVO.getOrderTourDetail().getIsOutside())) {
key = TOUR_REFUND;
}
OrderItem adultItem = orderItemBiz.selectOne(new OrderItem(){{
setType(ItemTypeEnum.TOUR_ADULT.getCode());
setOrderId(orderPageVO.getId());
}});
OrderItem childItem = orderItemBiz.selectOne(new OrderItem(){{
setType(ItemTypeEnum.TOUR_CHILD.getCode());
setOrderId(orderPageVO.getId());
}});
BigDecimal adultItemAmount = (null == adultItem)? BigDecimal.ZERO: adultItem.getRealAmount();
BigDecimal childItemAmount = (null == childItem)? BigDecimal.ZERO: childItem.getRealAmount();
topAmount = adultItemAmount.add(childItemAmount);
BigDecimal deductionAmount = orderAccountBiz.calculateDeduction(adultItemAmount.add(childItemAmount)
, orderPageVO.getOrderTourDetail().getStartTime() - System.currentTimeMillis()
, DictionaryKey.APP_ORDER+ "_"+ key
, refundDescBuilder);
totalDeductAmount = deductionAmount;
totalRefundAmount = orderPageVO.getRealAmount().subtract(deductionAmount);
refundDesc = refundDescBuilder.toString();
break;
default:
break;
}
OrderRefundPriceVO orpv = new OrderRefundPriceVO();
orpv.setRealAmount(orderPageVO.getRealAmount());
orpv.setRefundAmount(totalRefundAmount);
orpv.setCutAmount(totalDeductAmount);
orpv.setTopAmount(topAmount);
return orpv;
}
} }
\ No newline at end of file
...@@ -115,7 +115,7 @@ public class OrderCancelBiz { ...@@ -115,7 +115,7 @@ public class OrderCancelBiz {
* @param baseOrder * @param baseOrder
*/ */
@Transactional @Transactional
public void cancel(BaseOrder baseOrder) { public void cancel(BaseOrder baseOrder, BigDecimal changeViolateAmount) {
OrderRentVehicleDetail orvd = new OrderRentVehicleDetail(); OrderRentVehicleDetail orvd = new OrderRentVehicleDetail();
OrderTourDetail otd = new OrderTourDetail(); OrderTourDetail otd = new OrderTourDetail();
OrderMemberDetail omd = new OrderMemberDetail(); OrderMemberDetail omd = new OrderMemberDetail();
...@@ -149,14 +149,14 @@ public class OrderCancelBiz { ...@@ -149,14 +149,14 @@ public class OrderCancelBiz {
//获取出发时间 到现在 距离时间 //获取出发时间 到现在 距离时间
Long timeLag = orvd.getStartTime() - System.currentTimeMillis(); Long timeLag = orvd.getStartTime() - System.currentTimeMillis();
if(timeLag < 0 ) { if(timeLag < 0 ) {
//开始时间当天时间戳 Integer useDays = orderCalculateBiz.getIncludeDays(orvd.getStartTime(), System.currentTimeMillis());
Long beginOfStartDay = DateUtil.beginOfDay(DateUtil.date(orvd.getStartTime())).getTime();
//计算:使用天数 当前时间 - 开始时间的0时0分0秒
Long useTimeLag = System.currentTimeMillis() - beginOfStartDay;
log.info("useTimeLag {}", new BigDecimal(useTimeLag + ""));
log.info("divide {}", new BigDecimal((24 * 60 * 60 * 1000)+ ""));
Integer useDays = new BigDecimal(useTimeLag + "").divide(new BigDecimal((24 * 60 * 60 * 1000)+ ""), 0, RoundingMode.UP).intValue();
inProgressVO = orderCalculateBiz.calculateOrderComplete(baseOrder, orvd, oad, vehicleItemDTO, useDays, Boolean.TRUE); inProgressVO = orderCalculateBiz.calculateOrderComplete(baseOrder, orvd, oad, vehicleItemDTO, useDays, Boolean.TRUE);
//判断是否修改违约金
if(null != changeViolateAmount) {
oad.changeCancelViolate(changeViolateAmount);
}
//结合 //结合
//退款子流程: 订单基础,退款描述,退款金额 //退款子流程: 订单基础,退款描述,退款金额
orderAccountBiz.refundSubProcess(baseOrder, "", baseOrder.getRealAmount().subtract(orvd.getDeposit()), oad.getDepositAmount().add(oad.getOrderAmount()), AccountTypeEnum.OUT_ORDER_FUND.getCode(), RefundStatusEnum.ALL.getCode(), oad); orderAccountBiz.refundSubProcess(baseOrder, "", baseOrder.getRealAmount().subtract(orvd.getDeposit()), oad.getDepositAmount().add(oad.getOrderAmount()), AccountTypeEnum.OUT_ORDER_FUND.getCode(), RefundStatusEnum.ALL.getCode(), oad);
...@@ -199,7 +199,7 @@ public class OrderCancelBiz { ...@@ -199,7 +199,7 @@ public class OrderCancelBiz {
//退款流程 //退款流程
//违约金封顶 租车身份价 * 2天 //违约金封顶 租车身份价 * 2天
orderAccountBiz.rentRefundProcessCancel(baseOrder, BigDecimal.ZERO, timeLag, APP_ORDER+ "_"+ RENT_REFUND, orvd.getDeposit(), vehicleItemDTO.getBuyAmount(), oad, vehicleItemDTO.getTopAmount(0)); orderAccountBiz.rentRefundProcessCancel(baseOrder, BigDecimal.ZERO, timeLag, APP_ORDER+ "_"+ RENT_REFUND, orvd.getDeposit(), vehicleItemDTO.getBuyAmount(), oad, vehicleItemDTO.getTopAmount(0), null, changeViolateAmount);
//设置订单数据 //设置订单数据
//baseOrder.setDamagesAmount(csv.getDamagesAmount()); //baseOrder.setDamagesAmount(csv.getDamagesAmount());
...@@ -264,7 +264,7 @@ public class OrderCancelBiz { ...@@ -264,7 +264,7 @@ public class OrderCancelBiz {
} }
//退款流程 //退款流程
orderAccountBiz.rentRefundProcessCancel(baseOrder, adultItemAmount.add(childItemAmount), timeLag, APP_ORDER+ "_"+ key, BigDecimal.ZERO, BigDecimal.ZERO, oad, adultItemAmount.add(childItemAmount) ); orderAccountBiz.rentRefundProcessCancel(baseOrder, adultItemAmount.add(childItemAmount), timeLag, APP_ORDER+ "_"+ key, BigDecimal.ZERO, BigDecimal.ZERO, oad, adultItemAmount.add(childItemAmount), changeViolateAmount, null);
//如果有扣款项,则生成额外的费用明细 //如果有扣款项,则生成额外的费用明细
if(oad.getDeductions().size() > 0) { if(oad.getDeductions().size() > 0) {
...@@ -322,6 +322,8 @@ public class OrderCancelBiz { ...@@ -322,6 +322,8 @@ public class OrderCancelBiz {
if(result < 0) { if(result < 0) {
throw new BaseException(ResultCode.FAILED_CODE); throw new BaseException(ResultCode.FAILED_CODE);
} }
orvd.setBackFreeDays(freeDays);
orderRentVehicleBiz.updateSelectiveById(orvd);
} }
}else if(OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) { }else if(OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
......
package com.xxfc.platform.order.mapper; package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.pojo.dto.MemberOrderBo;
import com.xxfc.platform.order.pojo.dto.MemberOrderFindDTO;
import com.xxfc.platform.order.pojo.order.OrderListVo; import com.xxfc.platform.order.pojo.order.OrderListVo;
import com.xxfc.platform.order.pojo.order.OrderPageVO; import com.xxfc.platform.order.pojo.order.OrderPageVO;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -32,4 +35,6 @@ public interface BaseOrderMapper extends Mapper<BaseOrder> { ...@@ -32,4 +35,6 @@ public interface BaseOrderMapper extends Mapper<BaseOrder> {
public List<OrderPageVO> selectAllTourOrder(Map<String, Object> paramMap); public List<OrderPageVO> selectAllTourOrder(Map<String, Object> paramMap);
List<MemberOrderBo> findMemberOrders(MemberOrderFindDTO memberOrderFindDTO);
} }
...@@ -3,7 +3,6 @@ package com.xxfc.platform.order.mqhandler; ...@@ -3,7 +3,6 @@ package com.xxfc.platform.order.mqhandler;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.rabbitmq.client.Channel; import com.rabbitmq.client.Channel;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.biz.inner.OrderCancelBiz; import com.xxfc.platform.order.biz.inner.OrderCancelBiz;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -45,7 +44,7 @@ public class RabbitConsumer { ...@@ -45,7 +44,7 @@ public class RabbitConsumer {
try { try {
//设置自动取消标识 //设置自动取消标识
baseOrder.setCancelReason("超时未付款,系统自动取消订单"); baseOrder.setCancelReason("超时未付款,系统自动取消订单");
orderCancelBiz.cancel(baseOrder); orderCancelBiz.cancel(baseOrder, null);
}catch (BaseException e) { }catch (BaseException e) {
if(ResultCode.DB_OPERATION_FAIL_CODE == e.getStatus()) { if(ResultCode.DB_OPERATION_FAIL_CODE == e.getStatus()) {
log.info("取消操作被取消;订单id:"+ baseOrder.getId()); log.info("取消操作被取消;订单id:"+ baseOrder.getId());
......
...@@ -54,7 +54,8 @@ import java.time.ZoneOffset; ...@@ -54,7 +54,8 @@ import java.time.ZoneOffset;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.xxfc.platform.order.pojo.order.add.AddRentVehicleDTO.DEFAULT_DATE_TIME_FORMATTER; import static com.github.wxiaoqi.security.common.constant.CommonConstants.DATE_TIME_LINE_FORMATTER;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.YMR_SLASH_FORMATTER;
@Controller @Controller
@RequestMapping("baseOrder") @RequestMapping("baseOrder")
...@@ -338,8 +339,10 @@ public class BackStageOrderController extends CommonBaseController implements Us ...@@ -338,8 +339,10 @@ public class BackStageOrderController extends CommonBaseController implements Us
RentVehicleBO bo = BeanUtil.toBean(orderPageVO.getOrderRentVehicleDetail(), RentVehicleBO.class); RentVehicleBO bo = BeanUtil.toBean(orderPageVO.getOrderRentVehicleDetail(), RentVehicleBO.class);
bo.setOrder(orderPageVO); bo.setOrder(orderPageVO);
bo.setBookVehicleVO(new BookVehicleVO(){{ bo.setBookVehicleVO(new BookVehicleVO(){{
setBookStartDate(DEFAULT_DATE_TIME_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(bo.getStartTime()), ZoneOffset.ofHours(8)))); setBookStartDate(YMR_SLASH_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(bo.getStartTime()), ZoneOffset.ofHours(8))));
setBookEndDate(DEFAULT_DATE_TIME_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(bo.getEndTime()), ZoneOffset.ofHours(8)))); setBookEndDate(YMR_SLASH_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(bo.getEndTime()), ZoneOffset.ofHours(8))));
setBookStartDateTime(DATE_TIME_LINE_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(bo.getStartTime()), ZoneOffset.ofHours(8))));
setBookEndDateTime(DATE_TIME_LINE_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(bo.getEndTime()), ZoneOffset.ofHours(8))));
}}); }});
List<OrderAccompanyDTO> oads = JSONUtil.toList(JSONUtil.parseArray(orderItemBiz.selectOne(new OrderItem(){{ List<OrderAccompanyDTO> oads = JSONUtil.toList(JSONUtil.parseArray(orderItemBiz.selectOne(new OrderItem(){{
......
...@@ -36,7 +36,6 @@ import com.xxfc.platform.universal.entity.Dictionary; ...@@ -36,7 +36,6 @@ import com.xxfc.platform.universal.entity.Dictionary;
import com.xxfc.platform.universal.feign.ThirdFeign; import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.universal.vo.OrderPayVo; import com.xxfc.platform.universal.vo.OrderPayVo;
import com.xxfc.platform.universal.vo.OrderRefundVo; import com.xxfc.platform.universal.vo.OrderRefundVo;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -52,7 +51,6 @@ import org.springframework.web.context.request.ServletRequestAttributes; ...@@ -52,7 +51,6 @@ import org.springframework.web.context.request.ServletRequestAttributes;
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.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
...@@ -249,33 +247,32 @@ public class BaseOrderController extends CommonBaseController implements UserRes ...@@ -249,33 +247,32 @@ public class BaseOrderController extends CommonBaseController implements UserRes
if (StringUtils.isBlank(BaseContextHandler.getUserID())) { if (StringUtils.isBlank(BaseContextHandler.getUserID())) {
throw new BaseException(ResultCode.AJAX_WECHAT_NOTEXIST_CODE); throw new BaseException(ResultCode.AJAX_WECHAT_NOTEXIST_CODE);
} }
cancelCommon(no, cancelOrderDto, BaseContextHandler.getUserID()); cancelCommon(no, cancelOrderDto, BaseContextHandler.getUserID(), null);
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
@RequestMapping(value = "/back-stage/cancel/{no}", method = RequestMethod.POST) @RequestMapping(value = "/back-stage/cancel/{no}", method = RequestMethod.POST)
@ResponseBody @ResponseBody
@ApiOperation(value = "取消订单") @ApiOperation(value = "后台取消订单")
@IgnoreClientToken @IgnoreClientToken
public ObjectRestResponse bgCancel(@PathVariable String no, @RequestBody CancelOrderDTO cancelOrderDto) { public ObjectRestResponse bgCancel(@PathVariable String no, @RequestBody CancelOrderDTO cancelOrderDto) {
//查询列表数据 //查询列表数据
if (StringUtils.isBlank(cancelOrderDto.getAppUserId())) { if (StringUtils.isBlank(cancelOrderDto.getAppUserId())) {
throw new BaseException(ResultCode.AJAX_WECHAT_NOTEXIST_CODE); throw new BaseException(ResultCode.AJAX_WECHAT_NOTEXIST_CODE);
} }
cancelCommon(no, cancelOrderDto, cancelOrderDto.getAppUserId()); cancelCommon(no, cancelOrderDto, cancelOrderDto.getAppUserId(), cancelOrderDto.getChangeViolateAmount());
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
private void cancelCommon(String no, CancelOrderDTO cancelOrderDto, String userId) { private void cancelCommon(String no, CancelOrderDTO cancelOrderDto, String userId, BigDecimal changeViolateAmount) {
BaseOrder dbBaseOrder = baseOrderBiz.selectOne(new BaseOrder() {{ BaseOrder dbBaseOrder = baseOrderBiz.selectOne(new BaseOrder() {{
setNo(no); setNo(no);
}}); }});
if (null == dbBaseOrder || !userId.equals(dbBaseOrder.getUserId().toString())) { if (null == dbBaseOrder || !userId.equals(dbBaseOrder.getUserId().toString())) {
throw new BaseException(ResultCode.NOTEXIST_CODE); throw new BaseException(ResultCode.NOTEXIST_CODE);
} }
dbBaseOrder.setCancelReason(cancelOrderDto.getCancelReason()); dbBaseOrder.setCancelReason(cancelOrderDto.getCancelReason());
orderCancelBiz.cancel(dbBaseOrder); orderCancelBiz.cancel(dbBaseOrder, changeViolateAmount);
} }
@RequestMapping(value = "/app/unauth/notifyUrl", method = RequestMethod.GET) @RequestMapping(value = "/app/unauth/notifyUrl", method = RequestMethod.GET)
......
...@@ -9,23 +9,24 @@ import com.github.wxiaoqi.security.common.rest.BaseController; ...@@ -9,23 +9,24 @@ import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.order.biz.OrderMemberDetailBiz; import com.xxfc.platform.order.biz.OrderMemberDetailBiz;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderMemberDetail; import com.xxfc.platform.order.entity.OrderMemberDetail;
import com.xxfc.platform.order.pojo.dto.MemberOrderFindDTO;
import com.xxfc.platform.order.pojo.order.add.AddMemberDTO; import com.xxfc.platform.order.pojo.order.add.AddMemberDTO;
import com.xxfc.platform.order.pojo.order.MemberBO; import com.xxfc.platform.order.pojo.order.MemberBO;
import com.xxfc.platform.order.pojo.vo.MemberOrderPageVo;
import com.xxfc.platform.order.service.OrderMemberService; import com.xxfc.platform.order.service.OrderMemberService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller @Controller
@RequestMapping("orderMember") @RequestMapping("orderMember")
@Api(value="会员订单",tags={"会员订单"}) @Api(value = "会员订单", tags = {"会员订单"})
@IgnoreClientToken @IgnoreClientToken
public class OrderMemberController extends BaseController<OrderMemberDetailBiz,OrderMemberDetail> { public class OrderMemberController extends BaseController<OrderMemberDetailBiz, OrderMemberDetail> {
@Autowired @Autowired
OrderMemberService orderMemberService; OrderMemberService orderMemberService;
...@@ -33,10 +34,10 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz,O ...@@ -33,10 +34,10 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz,O
@Autowired @Autowired
UserFeign userFeign; UserFeign userFeign;
@RequestMapping(value = "add",method = RequestMethod.POST) @RequestMapping(value = "add", method = RequestMethod.POST)
@ResponseBody @ResponseBody
@ApiOperation(value = "确认会员订单") @ApiOperation(value = "确认会员订单")
public ObjectRestResponse<BaseOrder> add(@RequestBody AddMemberDTO dto){ public ObjectRestResponse<BaseOrder> add(@RequestBody AddMemberDTO dto) {
MemberBO bo = BeanUtil.toBean(dto, MemberBO.class); MemberBO bo = BeanUtil.toBean(dto, MemberBO.class);
//查询会员等级实体 //查询会员等级实体
...@@ -52,4 +53,22 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz,O ...@@ -52,4 +53,22 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz,O
return ObjectRestResponse.succ(bo.getOrder()); return ObjectRestResponse.succ(bo.getOrder());
} }
/**
* 会员订单列表
*
* @param memberOrderFindDTO
* @return
*/
@PostMapping("/page")
@ResponseBody
public ObjectRestResponse<MemberOrderPageVo> listMemberOrderPage(@RequestBody MemberOrderFindDTO memberOrderFindDTO) {
MemberOrderPageVo memberOrderPageVo = orderMemberService.listMemberOrderPage(memberOrderFindDTO);
return ObjectRestResponse.succ(memberOrderPageVo);
}
@PostMapping("/export")
@ResponseBody
public void exportMemberOrders(@RequestBody MemberOrderFindDTO memberOrderFindDTO, HttpServletResponse response){
// orderMemberService.exportMemberOrderData(memberOrderFindDTO);
}
} }
\ No newline at end of file
...@@ -15,19 +15,17 @@ import com.xxfc.platform.order.biz.OrderAccountBiz; ...@@ -15,19 +15,17 @@ import com.xxfc.platform.order.biz.OrderAccountBiz;
import com.xxfc.platform.order.biz.OrderItemBiz; import com.xxfc.platform.order.biz.OrderItemBiz;
import com.xxfc.platform.order.biz.OrderRefundBiz; import com.xxfc.platform.order.biz.OrderRefundBiz;
import com.xxfc.platform.order.biz.inner.OrderCalculateBiz; import com.xxfc.platform.order.biz.inner.OrderCalculateBiz;
import com.xxfc.platform.order.biz.inner.OrderCancelBiz;
import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum; import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum; import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.OrderItem; import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.entity.OrderRefund; import com.xxfc.platform.order.entity.OrderRefund;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail; import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import com.xxfc.platform.order.pojo.calculate.InProgressVO; import com.xxfc.platform.order.pojo.calculate.InProgressVO;
import com.xxfc.platform.order.pojo.calculate.OrderRefundPriceVO;
import com.xxfc.platform.order.pojo.order.OrderPageVO; import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.order.pojo.order.VehicleItemDTO; import com.xxfc.platform.order.pojo.order.VehicleItemDTO;
import com.xxfc.platform.universal.constant.DictionaryKey; import com.xxfc.platform.universal.constant.DictionaryKey;
import lombok.Data;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
...@@ -37,9 +35,7 @@ import org.springframework.web.bind.annotation.RequestMethod; ...@@ -37,9 +35,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE; import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.universal.constant.DictionaryKey.*; import static com.xxfc.platform.universal.constant.DictionaryKey.*;
...@@ -160,7 +156,7 @@ public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRe ...@@ -160,7 +156,7 @@ public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRe
orpv.setRefundAmount(totalRefundAmount); orpv.setRefundAmount(totalRefundAmount);
if(orderPageVO.getStatus().equals(OrderStatusEnum.ORDER_UNPAY.getCode()) if(orderPageVO.getStatus().equals(OrderStatusEnum.ORDER_UNPAY.getCode())
|| orderPageVO.getStatus().equals(OrderStatusEnum.ORDER_CRT.getCode()) || orderPageVO.getStatus().equals(OrderStatusEnum.ORDER_CRT.getCode())
|| totalDeductAmount.compareTo(BigDecimal.ZERO) <= 0) { || orpv.getRefundAmount().compareTo(BigDecimal.ZERO) <= 0) {
orpv.setRefundDesc("是否确定取消订单"); orpv.setRefundDesc("是否确定取消订单");
}else { }else {
orpv.setRefundDesc(StrUtil.format("本次取消操作需要扣除{}元违约金,实际退款金额为{}元,您确定要取消订单吗?", totalDeductAmount, totalRefundAmount)); orpv.setRefundDesc(StrUtil.format("本次取消操作需要扣除{}元违约金,实际退款金额为{}元,您确定要取消订单吗?", totalDeductAmount, totalRefundAmount));
...@@ -168,16 +164,18 @@ public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRe ...@@ -168,16 +164,18 @@ public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRe
return ObjectRestResponse.succ(orpv); return ObjectRestResponse.succ(orpv);
} }
@Data
public class OrderRefundPriceVO {
BigDecimal refundAmount;
BigDecimal realAmount;
BigDecimal cutAmount;
String refundDesc;
public void setRefundAmount(BigDecimal refundAmount) { @RequestMapping(value = "/bg-stage/getViolatePrice/{no}", method = RequestMethod.GET)
this.refundAmount = refundAmount; @ResponseBody
this.cutAmount = realAmount.subtract(refundAmount); @IgnoreClientToken
} public ObjectRestResponse<BigDecimal> getViolatePrice(@PathVariable(value = "no") String no) {
checkAppUser();
OrderPageVO orderPageVO = baseOrderBiz.pageByParm(new Query(new PageParam(){{
setLimit(1);
setPage(1);
}}){{put("no", no); }}.getSuper()).get(0);
OrderRefundPriceVO orderRefundPriceVO = orderCalculateBiz.getPriceCalculate(no, orderPageVO);
return ObjectRestResponse.succ(orderRefundPriceVO);
} }
} }
\ No newline at end of file
package com.xxfc.platform.order.rest; package com.xxfc.platform.order.rest;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken; import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
...@@ -11,6 +12,7 @@ import com.github.wxiaoqi.security.common.rest.CommonBaseController; ...@@ -11,6 +12,7 @@ import com.github.wxiaoqi.security.common.rest.CommonBaseController;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.biz.BaseOrderBiz; import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.biz.OrderRentVehicleBiz; import com.xxfc.platform.order.biz.OrderRentVehicleBiz;
import com.xxfc.platform.order.biz.inner.OrderCalculateBiz;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail; import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.pojo.order.add.AddRentVehicleDTO; import com.xxfc.platform.order.pojo.order.add.AddRentVehicleDTO;
...@@ -18,6 +20,9 @@ import com.xxfc.platform.order.pojo.order.RentVehicleBO; ...@@ -18,6 +20,9 @@ import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.pojo.order.add.BgAddRentDTO; import com.xxfc.platform.order.pojo.order.add.BgAddRentDTO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO; import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.order.service.OrderRentVehicleService; import com.xxfc.platform.order.service.OrderRentVehicleService;
import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.entity.Dictionary;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.vehicle.entity.BranchCompany; import com.xxfc.platform.vehicle.entity.BranchCompany;
import com.xxfc.platform.vehicle.feign.VehicleFeign; import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.BookVehicleVO; import com.xxfc.platform.vehicle.pojo.BookVehicleVO;
...@@ -26,19 +31,25 @@ import io.swagger.annotations.Api; ...@@ -26,19 +31,25 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.mockito.internal.util.collections.Sets; import org.mockito.internal.util.collections.Sets;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
@Controller @Controller
@RequestMapping("orderRentVehicle") @RequestMapping("orderRentVehicle")
@Api(value="租车订单",tags={"租车订单"}) @Api(value="租车订单",tags={"租车订单"})
@IgnoreClientToken @IgnoreClientToken
@Slf4j
public class OrderRentVehicleController extends CommonBaseController { public class OrderRentVehicleController extends CommonBaseController {
@Autowired @Autowired
...@@ -56,6 +67,12 @@ public class OrderRentVehicleController extends CommonBaseController { ...@@ -56,6 +67,12 @@ public class OrderRentVehicleController extends CommonBaseController {
@Autowired @Autowired
VehicleFeign vehicleFeign; VehicleFeign vehicleFeign;
@Autowired
ThirdFeign thirdFeign;
@Autowired
OrderCalculateBiz orderCalculateBiz;
@RequestMapping(value = "add",method = RequestMethod.POST) @RequestMapping(value = "add",method = RequestMethod.POST)
@ResponseBody @ResponseBody
@ApiOperation(value = "确认租车订单") @ApiOperation(value = "确认租车订单")
...@@ -81,6 +98,9 @@ public class OrderRentVehicleController extends CommonBaseController { ...@@ -81,6 +98,9 @@ public class OrderRentVehicleController extends CommonBaseController {
} }
private RentVehicleBO initRentVehicleBO(@RequestBody AddRentVehicleDTO vo) { private RentVehicleBO initRentVehicleBO(@RequestBody AddRentVehicleDTO vo) {
//计算天数
vo.setDayNum(orderCalculateBiz.getIncludeDays(vo.getStartTime(), vo.getEndTime()));
if(null == vo.getEndCompanyId() || vo.getEndCompanyId().equals(0)) { if(null == vo.getEndCompanyId() || vo.getEndCompanyId().equals(0)) {
if(StrUtil.isBlank(vo.getEndAddr())) { if(StrUtil.isBlank(vo.getEndAddr())) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE, Sets.newSet("公司参数不正确")); throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE, Sets.newSet("公司参数不正确"));
...@@ -113,6 +133,8 @@ public class OrderRentVehicleController extends CommonBaseController { ...@@ -113,6 +133,8 @@ public class OrderRentVehicleController extends CommonBaseController {
bo.setBookVehicleVO(new BookVehicleVO(){{ bo.setBookVehicleVO(new BookVehicleVO(){{
setBookStartDate(vo.getBookStartDate()); setBookStartDate(vo.getBookStartDate());
setBookEndDate(vo.getBookEndDate()); setBookEndDate(vo.getBookEndDate());
setBookStartDateTime(vo.getBookStartDateTime());
setBookEndDateTime(vo.getBookEndDateTime());
}}); }});
bo.setTickerNo(StrUtil.isNotBlank(vo.getTickerNos())? bo.setTickerNo(StrUtil.isNotBlank(vo.getTickerNos())?
StrUtil.splitTrim(vo.getTickerNos(), ","):null); StrUtil.splitTrim(vo.getTickerNos(), ","):null);
......
...@@ -7,7 +7,6 @@ import com.github.wxiaoqi.security.admin.feign.UserFeign; ...@@ -7,7 +7,6 @@ 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.feign.rest.UserRestInterface; import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.OrderUtil; import com.github.wxiaoqi.security.common.util.OrderUtil;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
...@@ -19,7 +18,6 @@ import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; ...@@ -19,7 +18,6 @@ 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;
......
...@@ -485,6 +485,8 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -485,6 +485,8 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rentVehicleBookDTO.setLiftCompany(detail.getStartCompanyId()); rentVehicleBookDTO.setLiftCompany(detail.getStartCompanyId());
rentVehicleBookDTO.setLiftAddr(detail.getStartAddr()); rentVehicleBookDTO.setLiftAddr(detail.getStartAddr());
rentVehicleBookDTO.setRetCompany(detail.getEndCompanyId()); rentVehicleBookDTO.setRetCompany(detail.getEndCompanyId());
rentVehicleBookDTO.setStartCompanyId(detail.getStartCompanyId());
rentVehicleBookDTO.setEndCompanyId(detail.getEndCompanyId());
rentVehicleBookDTO.setOrderNo(detail.getOrder().getNo()); rentVehicleBookDTO.setOrderNo(detail.getOrder().getNo());
rentVehicleBookDTO.setNumberPlate(numberPlate); rentVehicleBookDTO.setNumberPlate(numberPlate);
rentVehicleBookDTO.setStatus(status); rentVehicleBookDTO.setStatus(status);
......
...@@ -125,7 +125,7 @@ ...@@ -125,7 +125,7 @@
</if> </if>
<if test="userIds != null and userIds.size() > 0"> <if test="userIds != null and userIds.size() > 0">
and b.user_id in and b.user_id in
<foreach collection="userIds" item="item" open="(" separator="," close=")"> <foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item} #{item}
</foreach> </foreach>
...@@ -153,9 +153,10 @@ ...@@ -153,9 +153,10 @@
or t.start_time between #{startTime} and #{endTime}) or t.start_time between #{startTime} and #{endTime})
</if> </if>
<if test="vehicleIds != null and vehicleIds.size() > 0"> <if test="vehicleIds != null and vehicleIds.size() > 0">
AND r.vehicle_id IN <foreach collection="vehicleIds" item="vehicleId" open="(" close=")" separator=","> AND r.vehicle_id IN
#{vehicleId} <foreach collection="vehicleIds" item="vehicleId" open="(" close=")" separator=",">
</foreach> #{vehicleId}
</foreach>
</if> </if>
<if test="companyIds != null and companyIds.size > 0"> <if test="companyIds != null and companyIds.size > 0">
and (r.start_company_id in and (r.start_company_id in
...@@ -273,7 +274,7 @@ ...@@ -273,7 +274,7 @@
</if> </if>
</select> </select>
<select id="selectAllTourOrder" parameterType="Map" resultMap="orderPageMap"> <select id="selectAllTourOrder" parameterType="Map" resultMap="orderPageMap">
select b.* select b.*
from base_order b from base_order b
LEFT JOIN order_tour_detail r on r.order_id = b.id LEFT JOIN order_tour_detail r on r.order_id = b.id
...@@ -282,4 +283,64 @@ ...@@ -282,4 +283,64 @@
and r.start_time between #{startTime} and #{endTime} and r.start_time between #{startTime} and #{endTime}
</if> </if>
</select> </select>
<select id="findMemberOrders" resultType="com.xxfc.platform.order.pojo.dto.MemberOrderBo">
SELECT
`id`,
`no` AS `orderNo`,
`name`,
`status`,
`goods_amount` AS `goodsAmount`,
`real_amount` AS `realAmount`,
`order_amount` AS `orderAmount`,
`crt_time` AS `creatTime`,
`pay_time` AS `payTime`,
`coupon_amount` AS `couponAmount`,
`user_id` AS `userId`,
`has_pay` AS `hasPay`,
`member_level` AS `memberLevel`,
`facilitate_id` AS `facilitateId`,
`facilitate_phone` AS `facilitatePhone`
FROM
`base_order`
WHERE
type = 3
<if test="orderNo!=null and orderNo!=''">
and `no`=#{orderNo}
</if>
<if test="state!=null">
and `status`=#{state}
</if>
<if test="facilitatePhone!=null and facilitatePhone!=''">
and `facilitate_phone`=#{facilitatePhone}
</if>
<if test="startOrderTime!=null and endOrderTime!=null">
and `crt_time` between #{startOrderTime} and #{endOrderTime}
</if>
<if test="startOrderTime!=null and endOrderTime==null">
and `crt_time` <![CDATA[>=#{startOrderTime}]]>
</if>
<if test="endOrderTime!=null and startOrderTime==null">
and `crt_time` <![CDATA[<=#{endOrderTime}]]>
</if>
<if test="startPayTime!=null and endPayTime!=null">
and `pay_time` between #{startPayTime} and #{endPayTime}
</if>
<if test="startPayTime!=null and endPayTime==null">
and `pay_time` <![CDATA[>=#{startPayTime}]]>
</if>
<if test="endPayTime!=null and startPayTime==null">
and `pay_time` <![CDATA[<=#{endPayTime}]]>
</if>
<if test="levelName!=null and levelName!=''">
and `name` like CONCAT('%',#{levelName},'%')
</if>
<if test="userIds!=null and userIds.size()>0">
and `user_id` IN
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
#{userId}
</foreach>
</if>
ORDER BY `crt_time` DESC
</select>
</mapper> </mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxfc.platform.order.mapper.OrderAccountMapper"> <mapper namespace="com.xxfc.platform.order.mapper.OrderAccountMapper">
<select id="getOrderAccountByOrderType" resultType="com.xxfc.platform.order.pojo.account.OrderAccountDTO"> <select id="getOrderAccountByOrderType" parameterType="com.xxfc.platform.order.pojo.Term" resultType="com.xxfc.platform.order.pojo.account.OrderAccountDTO">
SELECT SELECT
<if test="subdivide !=null and subdivide ==1"> <if test="subdivide !=null and subdivide ==1">
date( FROM_UNIXTIME( a.crt_time / 1000 ) ) as oneDay, date( FROM_UNIXTIME( a.crt_time / 1000 ) ) as oneDay,
......
...@@ -45,6 +45,7 @@ public class DictionaryKey { ...@@ -45,6 +45,7 @@ public class DictionaryKey {
public static final String DRIVER_PRICE ="DRIVER_PRICE"; public static final String DRIVER_PRICE ="DRIVER_PRICE";
public static final String DAMAGE_SAFE ="DAMAGE_SAFE"; public static final String DAMAGE_SAFE ="DAMAGE_SAFE";
public static final String ILLEGAL_RESERVE = "ILLEGAL_RESERVE"; public static final String ILLEGAL_RESERVE = "ILLEGAL_RESERVE";
public static final String RENT_TIME_BUFFER = "RENT_TIME_BUFFER";
/** /**
* 旅游:保险费用 * 旅游:保险费用
......
...@@ -179,6 +179,9 @@ public interface VehicleFeign { ...@@ -179,6 +179,9 @@ public interface VehicleFeign {
@RequestMapping(value = "/vehicleInfo/bookRecord/update", method = RequestMethod.POST) @RequestMapping(value = "/vehicleInfo/bookRecord/update", method = RequestMethod.POST)
public ObjectRestResponse update(@RequestBody BookRecordUpdateLog bookRecordUpdateLog); public ObjectRestResponse update(@RequestBody BookRecordUpdateLog bookRecordUpdateLog);
@RequestMapping(value ="/branchCompany/app/unauth/getCompanyIds",method = RequestMethod.GET)
RestResponse<List<Integer>> getCompanyIds();
/** /**
* 车型日历价格 * 车型日历价格
* *
...@@ -190,9 +193,9 @@ public interface VehicleFeign { ...@@ -190,9 +193,9 @@ public interface VehicleFeign {
*/ */
@GetMapping(value = "/vehicle_model/calendar_price/app/unauth/price",produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @GetMapping(value = "/vehicle_model/calendar_price/app/unauth/price",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
ObjectRestResponse<List<VehicleModelCalendarPriceDTO>> findVehicleModelCalendarPriceByDate(@RequestParam(value = "startDate") Long startDate, ObjectRestResponse<List<VehicleModelCalendarPriceDTO>> findVehicleModelCalendarPriceByDate(@RequestParam(value = "startDate") Long startDate,
@RequestParam(value = "endDate") Long endDate, @RequestParam(value = "endDate") Long endDate,
@RequestParam(value = "vehicleModelId") Integer vehicleModelId, @RequestParam(value = "vehicleModelId") Integer vehicleModelId,
@RequestParam(value = "userId") Integer userId); @RequestParam(value = "userId") Integer userId);
@GetMapping(value = "/bookRecord/get") @GetMapping(value = "/bookRecord/get")
public ObjectRestResponse<List<BookRecordUpdateLog>> get(@RequestParam(value = "bookRecordId")Long bookRecordId); public ObjectRestResponse<List<BookRecordUpdateLog>> get(@RequestParam(value = "bookRecordId")Long bookRecordId);
......
...@@ -27,6 +27,18 @@ public class BookVehicleVO { ...@@ -27,6 +27,18 @@ public class BookVehicleVO {
@ApiModelProperty("预定目标日期(结束)") @ApiModelProperty("预定目标日期(结束)")
private String bookEndDate; private String bookEndDate;
/**
* 预定目标日期(开始)
*/
@ApiModelProperty("预定目标时间(开始)")
private String bookStartDateTime;
/**
* 预定目标日期(结束)
*/
@ApiModelProperty("预定目标时间(结束)")
private String bookEndDateTime;
/** /**
* 取消预定目标日期(开始) * 取消预定目标日期(开始)
*/ */
......
...@@ -31,6 +31,19 @@ public class RentVehicleBookDTO extends PageParam { ...@@ -31,6 +31,19 @@ public class RentVehicleBookDTO extends PageParam {
@ApiModelProperty("预定目标日期(结束)") @ApiModelProperty("预定目标日期(结束)")
private String bookEndDate; private String bookEndDate;
/**
* 预定目标日期(开始)
*/
@ApiModelProperty("预定目标时间(开始)")
private String bookStartDateTime;
/**
* 预定目标日期(结束)
*/
@ApiModelProperty("预定目标时间(结束)")
private String bookEndDateTime;
/** /**
* 提车地点 * 提车地点
*/ */
......
...@@ -54,8 +54,8 @@ public class UsableVeicleDTO extends PageParam { ...@@ -54,8 +54,8 @@ public class UsableVeicleDTO extends PageParam {
@ApiModelProperty(hidden = true) @ApiModelProperty(hidden = true)
Boolean yearNo4Where; Boolean yearNo4Where;
@ApiModelProperty(hidden = true) // @ApiModelProperty(hidden = true)
Integer withoutRecordWhere = 1; // Integer withoutRecordWhere = 1;
/** /**
* 用途 1 租车 * 用途 1 租车
......
...@@ -33,6 +33,15 @@ public class VehicleBookRecordQueryVo extends PageParam { ...@@ -33,6 +33,15 @@ public class VehicleBookRecordQueryVo extends PageParam {
*/ */
private String selectedMonth; private String selectedMonth;
/**
* 查询预定开始月份 yyyy-MM
*/
private String bookStartDate;
/**
* 查询预定结束月份 yyyy-MM
*/
private String bookEndDate;
/** /**
* 申请状态 * 申请状态
*/ */
......
...@@ -84,17 +84,20 @@ public class VehicleActiveService { ...@@ -84,17 +84,20 @@ public class VehicleActiveService {
if (MileageLift == null || MileageLift1 >= MileageLift) { if (MileageLift == null || MileageLift1 >= MileageLift) {
// 写入车辆公里数,预计目的地 // 写入车辆公里数,预计目的地
vehicle.setMileageLastUpdate(MileageLift1); vehicle.setMileageLastUpdate(MileageLift1);
vehicleMapper.updateByPrimaryKeySelective(vehicle);
// 修改车辆状态,确认是空闲状态 // 修改车辆状态,确认是空闲状态
int result = vehicleMapper.updateStatusByIdAndStatus(departureVo.getVehicleId(), VehicleStatus.DEPARTURE.getCode(), int result = vehicleMapper.updateStatusByIdAndStatus(departureVo.getVehicleId(), VehicleStatus.DEPARTURE.getCode(),
VehicleStatus.NORMAL.getCode()); VehicleStatus.NORMAL.getCode());
//修改预约记录状态 //修改预约记录状态
VehicleBookRecord vehicleBookRecord = null; VehicleBookRecord vehicleBookRecord = null;
if (departureVo.getBookRecordId() != null) { if (departureVo.getBookRecordId() != null) {
vehicleBookRecord = vehicleBookRecordBiz.selectById(departureVo.getBookRecordId()); vehicleBookRecord = vehicleBookRecordBiz.selectById(departureVo.getBookRecordId());
updateBookRecordStatus(vehicleBookRecord, 1); updateBookRecordStatus(vehicleBookRecord, 1);
} }
if (vehicleBookRecord != null) {
vehicle.setParkBranchCompanyId(vehicleBookRecord.getRetCompany());
}
vehicleMapper.updateByPrimaryKeySelective(vehicle);
VehicleDepartureLogVo vehicleDepartureLogVo = vehicleDepartureLogMapper.selectByBookRecordId(departureVo.getBookRecordId()); VehicleDepartureLogVo vehicleDepartureLogVo = vehicleDepartureLogMapper.selectByBookRecordId(departureVo.getBookRecordId());
if (vehicleDepartureLogVo != null) { if (vehicleDepartureLogVo != null) {
BeanUtil.copyProperties(departureVo, vehicleDepartureLogVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true)); BeanUtil.copyProperties(departureVo, vehicleDepartureLogVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
...@@ -208,9 +211,6 @@ public class VehicleActiveService { ...@@ -208,9 +211,6 @@ public class VehicleActiveService {
} }
// 写入车辆公里数,还车分公司id // 写入车辆公里数,还车分公司id
vehicle.setMileageLastUpdate(MileageRest1); vehicle.setMileageLastUpdate(MileageRest1);
if (vehicleBookRecord != null) {
vehicle.setParkBranchCompanyId(vehicleBookRecord.getRetCompany());
}
vehicleMapper.updateByPrimaryKeySelective(vehicle); vehicleMapper.updateByPrimaryKeySelective(vehicle);
// 出车记录 // 出车记录
VehicleDepartureLogVo departureLogVo = vehicleDepartureLogMapper.selectByBookRecordId(arrivalVo.getBookRecordId()); VehicleDepartureLogVo departureLogVo = vehicleDepartureLogMapper.selectByBookRecordId(arrivalVo.getBookRecordId());
......
...@@ -294,7 +294,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR ...@@ -294,7 +294,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
//如果修改的有停靠分公司,需要添加一条调度记录 //如果修改的有停靠分公司,需要添加一条调度记录
Vehicle vehicle1 = selectById(exitsVehicle.getId()); Vehicle vehicle1 = selectById(exitsVehicle.getId());
if (vehicle1 != null) { if (vehicle1 != null) {
if (vehicle1.getParkBranchCompanyId() != addOrUpdateVehicleVo.getParkBranchCompanyId()) { if (!vehicle1.getParkBranchCompanyId() .equals(addOrUpdateVehicleVo.getParkBranchCompanyId())) {
VehicleBookRecord vehicleBookRecord = new VehicleBookRecord(); VehicleBookRecord vehicleBookRecord = new VehicleBookRecord();
vehicleBookRecord.setRetCompany(addOrUpdateVehicleVo.getParkBranchCompanyId()); vehicleBookRecord.setRetCompany(addOrUpdateVehicleVo.getParkBranchCompanyId());
vehicleBookRecord.setLiftCompany(vehicle1.getParkBranchCompanyId()); vehicleBookRecord.setLiftCompany(vehicle1.getParkBranchCompanyId());
...@@ -322,9 +322,11 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR ...@@ -322,9 +322,11 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
} }
} }
} else {
log.info("【修改车辆信息错误】》》》数据库车辆信息:{};前端传参车辆信息:{}", exitsVehicle.toString(), addOrUpdateVehicleVo.toString());
return RestResponse.codeAndMessage(ResCode.VEHICLE_INFO_SAME_NUM_PLATE_EXISTS.getCode(),
ResCode.VEHICLE_INFO_SAME_NUM_PLATE_EXISTS.getDesc());
} }
return RestResponse.codeAndMessage(ResCode.VEHICLE_INFO_SAME_NUM_PLATE_EXISTS.getCode(),
ResCode.VEHICLE_INFO_SAME_NUM_PLATE_EXISTS.getDesc());
// if(addOrUpdateVehicleVo.getCode()!= null && // if(addOrUpdateVehicleVo.getCode()!= null &&
// addOrUpdateVehicleVo.getCode().equals(exitsVehicles.get(0).getCode())){ // addOrUpdateVehicleVo.getCode().equals(exitsVehicles.get(0).getCode())){
......
...@@ -3,19 +3,14 @@ package com.xxfc.platform.vehicle.biz; ...@@ -3,19 +3,14 @@ package com.xxfc.platform.vehicle.biz;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.CopyOptions;
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.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.OrderTourDetail;
import com.xxfc.platform.order.feign.OrderFeign; import com.xxfc.platform.order.feign.OrderFeign;
import com.xxfc.platform.order.pojo.order.OrderPageVO; import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode; import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import com.xxfc.platform.vehicle.constant.VehicleCountType; import com.xxfc.platform.vehicle.constant.VehicleCountType;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import com.xxfc.platform.vehicle.entity.VehicleCountRecord; import com.xxfc.platform.vehicle.entity.VehicleCountRecord;
import com.xxfc.platform.vehicle.mapper.VehicleCountRecordMapper; import com.xxfc.platform.vehicle.mapper.VehicleCountRecordMapper;
import com.xxfc.platform.vehicle.pojo.DepartureLogVo;
import com.xxfc.platform.vehicle.pojo.ExcelParamDto; import com.xxfc.platform.vehicle.pojo.ExcelParamDto;
import com.xxfc.platform.vehicle.pojo.VehicleBookRecordVo; import com.xxfc.platform.vehicle.pojo.VehicleBookRecordVo;
import com.xxfc.platform.vehicle.util.excel.ExcelExport; import com.xxfc.platform.vehicle.util.excel.ExcelExport;
...@@ -24,18 +19,14 @@ import org.apache.commons.lang3.StringUtils; ...@@ -24,18 +19,14 @@ import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.DateTimeFormatter;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 统计出车,交车数量 * 统计出车,交车数量
...@@ -265,7 +256,7 @@ public class VehicleCountRecordBiz extends BaseBiz<VehicleCountRecordMapper, Veh ...@@ -265,7 +256,7 @@ public class VehicleCountRecordBiz extends BaseBiz<VehicleCountRecordMapper, Veh
//内部用车提前出车数量 //内部用车提前出车数量
Integer innerBeforeArrivalNum = vehicleDepartureService.selectAllDepartureLog(param); Integer innerBeforeArrivalNum = vehicleDepartureService.selectAllDepartureLog(param);
if(innerBeforeArrivalNum != null && innerBeforeArrivalNum > 0) { if(innerBeforeArrivalNum != null && innerBeforeArrivalNum > 0) {
innerCountRecord.setAfterArrivalNum(innerBeforeArrivalNum); innerCountRecord.setBeforeArrivalNum(innerBeforeArrivalNum);
} }
param.put("type", 1); param.put("type", 1);
//内部用车正常出车数量 //内部用车正常出车数量
...@@ -461,7 +452,7 @@ public class VehicleCountRecordBiz extends BaseBiz<VehicleCountRecordMapper, Veh ...@@ -461,7 +452,7 @@ public class VehicleCountRecordBiz extends BaseBiz<VehicleCountRecordMapper, Veh
//内部用车提前出车数量 //内部用车提前出车数量
Integer innerBeforeArrivalNum = vehicleDepartureService.selectAllDepartureLog(param); Integer innerBeforeArrivalNum = vehicleDepartureService.selectAllDepartureLog(param);
if(innerBeforeArrivalNum != null && innerBeforeArrivalNum > 0) { if(innerBeforeArrivalNum != null && innerBeforeArrivalNum > 0) {
innerCountRecord.setAfterArrivalNum(innerBeforeArrivalNum); innerCountRecord.setBeforeArrivalNum(innerBeforeArrivalNum);
} }
param.put("type", 1); param.put("type", 1);
//内部用车正常出车数量 //内部用车正常出车数量
......
...@@ -195,14 +195,14 @@ public class RentVehicleController extends BaseController<VehicleBiz> implements ...@@ -195,14 +195,14 @@ public class RentVehicleController extends BaseController<VehicleBiz> implements
} }
bookVehicleId = pageDataVO.getData().get(0).getId(); bookVehicleId = pageDataVO.getData().get(0).getId();
} }
//判断是否为今天,如果是则设置为一分钟后开始 //判断是否为今天,如果是则设置为30秒后开始 防止预约开始时间比当前时间 要 前
if(DateUtil.today().equals(dto.getBookStartDate())) { if(DateUtil.today().equals(dto.getBookStartDate())) {
LocalDateTime ldt = LocalDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()), ZoneOffset.ofHours(8)).plusSeconds(30L); LocalDateTime ldt = LocalDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()), ZoneOffset.ofHours(8)).plusSeconds(30L);
dto.setBookStartDate(DateTimeFormatter.ofPattern(DATE_TIME_LINE).format(ldt)); dto.setBookStartDate(DateTimeFormatter.ofPattern(DATE_TIME_LINE).format(ldt));
}else { }else {
dto.setBookStartDate(dto.getBookStartDate()+ " 00:00:00"); dto.setBookStartDate(dto.getBookEndDateTime());
} }
dto.setBookEndDate(dto.getBookEndDate()+ " 23:59:59"); dto.setBookEndDate(dto.getBookEndDateTime());
BookVehicleVO bookVehicleVo = BeanUtil.toBean(dto, BookVehicleVO.class); BookVehicleVO bookVehicleVo = BeanUtil.toBean(dto, BookVehicleVO.class);
bookVehicleVo.setBookType(BookType.USER_RENT.getCode()); bookVehicleVo.setBookType(BookType.USER_RENT.getCode());
bookVehicleVo.setVehicleId(bookVehicleId); bookVehicleVo.setVehicleId(bookVehicleId);
......
...@@ -225,7 +225,7 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata ...@@ -225,7 +225,7 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata
try { try {
vehiclePageQueryVo = JSON.parseObject(vehiclePageQueryVoJson, VehiclePageQueryVo.class); vehiclePageQueryVo = JSON.parseObject(vehiclePageQueryVoJson, VehiclePageQueryVo.class);
UserDTO userDTO = userFeign.userinfoByToken(userAuthConfig.getToken(request)).getData(); UserBo userDTO = userFeign.userinfoByToken(userAuthConfig.getToken(request)).getData();
if (userDTO != null) { if (userDTO != null) {
if (userDTO.getDataAll() == 2) { if (userDTO.getDataAll() == 2) {
List<Integer> companyList = vehicleBiz.dataCompany(userDTO.getDataZone(), userDTO.getDataCompany()); List<Integer> companyList = vehicleBiz.dataCompany(userDTO.getDataZone(), userDTO.getDataCompany());
......
...@@ -471,6 +471,12 @@ ...@@ -471,6 +471,12 @@
and (v1.book_start_date like CONCAT(#{selectedMonth}, "%") or v1.book_end_date like and (v1.book_start_date like CONCAT(#{selectedMonth}, "%") or v1.book_end_date like
CONCAT(#{selectedMonth}, "%")) CONCAT(#{selectedMonth}, "%"))
</if> </if>
<if test="bookStartDate != null">
and v1.book_start_date like CONCAT(#{bookStartDate}, "%")
</if>
<if test="bookEndDate != null">
and v1.book_end_date like CONCAT(#{bookEndDate}, "%")
</if>
<if test="numberPlate != null"> <if test="numberPlate != null">
and v3.number_plate like concat('%', #{numberPlate}, '%') and v3.number_plate like concat('%', #{numberPlate}, '%')
</if> </if>
...@@ -480,6 +486,9 @@ ...@@ -480,6 +486,9 @@
<if test="keywords != null and keywords != ''"> <if test="keywords != null and keywords != ''">
and (v3.number_plate like concat('%', #{keywords}, '%') or v3.code like concat('%', #{keywords}, '%')) and (v3.number_plate like concat('%', #{keywords}, '%') or v3.code like concat('%', #{keywords}, '%'))
</if> </if>
<if test="zoneId != null">
and bc3.zone_id = #{zoneId}
</if>
<if test="companyIds != null and companyIds.size > 0"> <if test="companyIds != null and companyIds.size > 0">
and (v1.lift_company in and (v1.lift_company in
<foreach collection="companyIds" item="id" open="(" separator="," close=")"> <foreach collection="companyIds" item="id" open="(" separator="," close=")">
......
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