Commit 946155ff authored by hanfeng's avatar hanfeng

Merge branch 'dev' of http://10.5.52.3/youjj/cloud-platform into dev2

parents c28dca9b 0720af48
......@@ -29,6 +29,14 @@ public class ResultCode {
// 只能取消预定两个月内的车辆
public static int ONLY_UNBOOK_TWO_MONTH = Integer.valueOf(SystemProperty.getResultConfig("ONLY_UNBOOK_TWO_MONTH"));
// 添加车辆太多
public static int ADD_VEHICLE_MORE = Integer.valueOf(SystemProperty.getResultConfig("ADD_VEHICLE_MORE"));
// 停靠公司不能为空
public static int RET_COMPANY_CAN_NOT_BE_NULL = Integer.valueOf(SystemProperty.getResultConfig("RET_COMPANY_CAN_NOT_BE_NULL"));
// 车牌不能为空
public static int NUMBER_PLAT_CAN_NOT_BE_NULL = Integer.valueOf(SystemProperty.getResultConfig("NUMBER_PLAT_CAN_NOT_BE_NULL"));
// 选择日期不可取消预定
public static int VEHICLE_CAN_NOT_UNBOOK = Integer.valueOf(SystemProperty.getResultConfig("VEHICLE_CAN_NOT_UNBOOK"));
......
......@@ -214,7 +214,7 @@ BOOKED_FAILED_CODE = 4007
4007=车辆预定失败,请重试!
ONLY_BOOK_FROM_TODAY = 4008
4008=预定时间不能小于当前时间
4008=取消或预定时间不能小于当前时间
ADD_VEHICLE_FAIL = 4009
4009 = 添加车辆失败,请重试
......@@ -238,4 +238,13 @@ BOOKED_DATE_IS_EMPTY = 4015
4015 = 预定日期为空
TODAY_CAN_NOT_BOOK = 4016
4016 = 当天不可预定
\ No newline at end of file
4016 = 当天不可预定
ADD_VEHICLE_MORE = 4017
4017 = 添加车辆过多,请分批添加
RET_COMPANY_CAN_NOT_BE_NULL = 4018
4018 = 停靠公司不能为空
NUMBER_PLAT_CAN_NOT_BE_NULL = 4019
4019 = 车牌不能为空
\ No newline at end of file
......@@ -70,6 +70,7 @@ public class TokenAop {
if (StringUtils.isEmpty(token)){
// return ObjectRestResponse.createFailedResult(4004,"token不能为空");
args[i]= new AppUserDTO();
break;
}
args[i]= userFeign.userDetailByToken(token).getData();
break;
......
......@@ -88,7 +88,7 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
}else {
//判断用户是否有有效的上线
log.info("----userId==="+userId+"----bindTime===="+bindTime+"----relation.getBindTime()==="+relation.getBindTime());
if(relation.getParentId()==null||relation.getParentId()==0||(relation.getIsForever()!=1&&relation.getBindTime()<bindTime)){
if(relation.getParentId()==null||relation.getParentId()==0||(relation.getIsForever()!=1&&validTime>0&&relation.getBindTime()<bindTime)){
relation.setParentId(parentId);
relation.setBindType(type);
relation.setBindTime(time);
......
......@@ -42,6 +42,7 @@ public class WaterMQHandler {
*/
@RabbitListener(queues = ORDER_WATER_QUEUE)
public void integralHandler(Message message, @Headers Map<String, Object> headers, Channel channel) {
log.info("拥金队列 messageJson:"+ JSONUtil.parse(message));
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(new Runnable() {
@Override
......
......@@ -153,7 +153,7 @@ public class AppUserController extends CommonBaseController{
UserMemberVo memberVo=userMemberBiz.getMemberInfoByUserId(userid);
if(memberVo!=null){
BeanUtils.copyProperties(userDTO,memberVo);
userDTO.setPayCount(orderFeign.baseOrderCount(SYS_TRUE, "4,5,6,7", null, userid).getData());
userDTO.setPayCount(orderFeign.baseOrderCount(SYS_TRUE, "4,5,6,-1", null, userid).getData());
Integer level=memberVo.getMemberLevel();
BaseUserMemberLevel memberLevel=userMemberLevelBiz.getLevel(level);
if (memberLevel!=null){
......
......@@ -16,6 +16,7 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.msg.TableResultResponse;
import com.github.wxiaoqi.security.common.rest.CommonBaseController;
import com.github.wxiaoqi.security.common.util.Query;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
......@@ -78,13 +79,13 @@ public class UserController extends CommonBaseController {
if (StringUtils.isNotBlank(username)) {
List<User> list = userBiz.getCountByUsername(username);
if (list.size() > 0) {
throw new RuntimeException("用户名不能重复");
}
return ObjectRestResponse.createFailedResult(ResCode.USER_IS_EXIST.getCode(), ResCode.USER_IS_EXIST.getDesc());
}
}
userBiz.insertSelective(vo);
//添加权限关系
groupBiz.modifyUserGroups(vo.getId(), vo.getMembers());
return new ObjectRestResponse();
return ObjectRestResponse.succ();
}
private void handleDataLimit(@RequestBody UserVO dto) {
......@@ -166,12 +167,12 @@ public class UserController extends CommonBaseController {
if (StringUtils.isNotBlank(username)) {
List<User> list = userBiz.getCountByUsername(username);
if (list.size() > 1) {
throw new RuntimeException("用户名不能重复");
return ObjectRestResponse.createFailedResult(ResCode.USER_IS_EXIST.getCode(), ResCode.USER_IS_EXIST.getDesc());
}
if (list.size() == 1) {
User user = list.get(0);
if (!user.getId().equals(vo.getId())) {
throw new RuntimeException("用户名不能重复");
return ObjectRestResponse.createFailedResult(ResCode.USER_IS_EXIST.getCode(), ResCode.USER_IS_EXIST.getDesc());
}
}
}
......
package com.xxfc.platform.activity.dto;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/13 9:59
*/
@Data
public class ActivityListDTO {
private Long activity_startTime;
private Long activity_endTime;
}
package com.xxfc.platform.activity.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/12 19:01
*/
@Data
public class ActivityPopularizeRelationDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主用户
*/
@ApiModelProperty(value = "主用户")
private Integer majorUserId;
/**
* 次要用户
*/
@ApiModelProperty(value = "次要用户")
private Integer minorUserId;
}
......@@ -2,6 +2,8 @@ package com.xxfc.platform.activity.feign;
import com.github.wxiaoqi.security.admin.dto.UserInfoDTO;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.activity.dto.ActivityListDTO;
import com.xxfc.platform.activity.dto.ActivityPopularizeRelationDTO;
import com.xxfc.platform.activity.entity.IntegralUserTotal;
import com.xxfc.platform.activity.vo.UserCouponVo;
import io.swagger.annotations.ApiModelProperty;
......@@ -46,18 +48,27 @@ public interface ActivityFeign {
@ApiOperation("优惠卷取消使用")
@RequestMapping(value = "/user/cancelUse", method = RequestMethod.POST)
public ObjectRestResponse cancelUse(@RequestParam(value = "TickerNo",defaultValue ="" ) String TickerNo);
public ObjectRestResponse cancelUse(@RequestParam(value = "TickerNo", defaultValue = "") String TickerNo);
@ApiOperation("新人有礼参加活动")
@RequestMapping(value = "/join/user", method = RequestMethod.POST)
public ObjectRestResponse join(@RequestParam(value = "userId",defaultValue ="0" ) Integer userId);
public ObjectRestResponse join(@RequestParam(value = "userId", defaultValue = "0") Integer userId);
@ApiModelProperty("获取用户积分")
@GetMapping(value = "/user/info")
public UserInfoDTO getUserInfo(@RequestParam("userId") Integer userId);
@ApiOperation("清除数据")
@GetMapping("/activity_data/clear")
ObjectRestResponse<Void> clearDate(@RequestParam(value = "userIds") List<Integer> userIds);
@ApiOperation("清除数据")
@GetMapping("/activity_data/clear")
ObjectRestResponse<Void> clearDate(@RequestParam(value = "userIds") List<Integer> userIds);
@ApiOperation("查询活动邀请数据")
@GetMapping("/activityPopularizeRelation/activity_popularize")
List<ActivityPopularizeRelationDTO> findActivityPopularizeRelationByActivityIdAndTime(@RequestParam(value = "activityId") Integer activityId,
@RequestParam(value = "startTime", required = false) Long startTime,
@RequestParam(value = "endTime", required = false) Long endTime);
@ApiOperation("查询活动的时间")
@GetMapping("/activityList/time/{activityId}")
ActivityListDTO findActivityStartTimeAndEndTimeById(@PathVariable(value = "activityId") Integer activityId);
}
package com.xxfc.platform.activity.biz;
import com.xxfc.platform.activity.dto.ActivityListDTO;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.xxfc.platform.activity.entity.ActivityList;
......@@ -10,6 +12,7 @@ import tk.mybatis.mapper.weekend.WeekendSqls;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Objects;
/**
* 活动(活动列表)
......@@ -30,4 +33,14 @@ public class ActivityListBiz extends BaseBiz<ActivityListMapper,ActivityList> {
List<ActivityList> activityLists = selectByExample(exa);
return activityLists;
}
public ActivityListDTO findActivityStartTimeAndEndTimeById(Integer activityId) {
ActivityListDTO activityListDTO = new ActivityListDTO();
ActivityList activityList = mapper.selectByPrimaryKey(activityId);
if (Objects.nonNull(activityList)){
activityListDTO.setActivity_startTime(activityList.getStartTime());
activityListDTO.setActivity_endTime(activityList.getEndTime());
}
return activityListDTO;
}
}
\ No newline at end of file
package com.xxfc.platform.activity.biz;
import com.xxfc.platform.activity.dto.ActivityPopularizeRelationDTO;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import com.xxfc.platform.activity.entity.ActivityPopularizeRelation;
import com.xxfc.platform.activity.mapper.ActivityPopularizeRelationMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import java.util.ArrayList;
import java.util.List;
/**
* 活动的参与者关系表
*
......@@ -15,4 +20,13 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
*/
@Service
public class ActivityPopularizeRelationBiz extends BaseBiz<ActivityPopularizeRelationMapper,ActivityPopularizeRelation> {
public List<ActivityPopularizeRelationDTO> findActivityPopularizeRelationsByActivityIdAndTime(Integer activityId, Long startTime, Long endTime) {
List<ActivityPopularizeRelationDTO> activityPopularizeRelationDTOS = new ArrayList<>();
List<ActivityPopularizeRelationDTO> relations = mapper.findActivityPopularizeRelationsByActivityIdAndTime(activityId, startTime, endTime);
if (CollectionUtils.isNotEmpty(relations)){
activityPopularizeRelationDTOS.addAll(relations);
}
return activityPopularizeRelationDTOS;
}
}
\ No newline at end of file
package com.xxfc.platform.activity.mapper;
import com.xxfc.platform.activity.dto.ActivityPopularizeRelationDTO;
import com.xxfc.platform.activity.entity.ActivityPopularizeRelation;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
* 活动的参与者关系表
*
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-17 19:51:17
*/
public interface ActivityPopularizeRelationMapper extends Mapper<ActivityPopularizeRelation> {
List<ActivityPopularizeRelationDTO> findActivityPopularizeRelationsByActivityIdAndTime(@Param("activityId") Integer activityId, @Param("startTime") Long startTime, @Param("endTime") Long endTime);
}
......@@ -4,12 +4,14 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityListBiz;
import com.xxfc.platform.activity.biz.HomeActivitiesBiz;
import com.xxfc.platform.activity.dto.ActivityListDTO;
import com.xxfc.platform.activity.entity.ActivityList;
import com.xxfc.platform.activity.entity.ActivityManagement;
import com.xxfc.platform.activity.entity.HomeActivities;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -34,4 +36,9 @@ public class ActivityListController extends BaseController<ActivityListBiz,Activ
// List<ActivityList> list= baseBiz.activities();
return ObjectRestResponse.succ(activities);
}
@GetMapping("/time/{activityId}")
public ActivityListDTO findActivityStartTimeAndEndTimeById(@PathVariable(value = "activityId") Integer activityId){
return baseBiz.findActivityStartTimeAndEndTimeById(activityId);
}
}
\ No newline at end of file
......@@ -2,13 +2,26 @@ package com.xxfc.platform.activity.rest;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityPopularizeRelationBiz;
import com.xxfc.platform.activity.dto.ActivityPopularizeRelationDTO;
import com.xxfc.platform.activity.entity.ActivityPopularizeRelation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("activityPopularizeRelation")
public class ActivityPopularizeRelationController extends BaseController<ActivityPopularizeRelationBiz,ActivityPopularizeRelation> {
@GetMapping("/activity_popularize")
public List<ActivityPopularizeRelationDTO> findActivityPopularizeRelationByActivityIdAndTime(@RequestParam(value = "activityId") Integer activityId,
@RequestParam(value = "startTime",required = false) Long startTime,
@RequestParam(value = "endTime",required = false) Long endTime){
return baseBiz.findActivityPopularizeRelationsByActivityIdAndTime(activityId,startTime,endTime);
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxfc.platform.activity.mapper.ActivityPopularizeRelationMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.activity.entity.ActivityPopularizeRelation" id="activityPopularizeRelationMap">
<result property="id" column="id"/>
<result property="crtTime" column="crt_time"/>
<result property="updTime" column="upd_time"/>
<result property="popularizeId" column="popularize_id"/>
<result property="majorUserId" column="major_user_id"/>
<result property="minorUserId" column="minor_user_id"/>
</resultMap>
<select id="findActivityPopularizeRelationsByActivityIdAndTime" resultMap="activityPopularizeRelationMap">
select * from `activity_popularize_relation` where `popularize_id`=#{activityId}
<if test="startTime != null and endTime !=null">
and `crt_time` between #{startTime} and #{endTime}
</if>
<if test="startTime != null and endTime == null">
and <![CDATA[ `crt_time` >= #{startTime}]]>
</if>
<if test="endTime != null and startTime ==null">
and <![CDATA[ `crt_time` <= #{endTime}]]>
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -73,4 +73,7 @@ public class CampsiteShopDetailDTO {
*/
private String logo;
@ApiModelProperty(value = "海报背景")
private String posterBackground;
}
......@@ -170,4 +170,6 @@ public class CampsiteShopAdminVO {
*/
private List<CampsiteTagListVo> campsiteTagListVos;
@ApiModelProperty(value = "海报背景")
private String posterBackground;
}
......@@ -97,4 +97,7 @@ public class CampsiteShopDetailVo {
* 店铺logo
*/
private String logo;
@ApiModelProperty(value = "海报背景")
private String posterBackground;
}
......@@ -58,7 +58,7 @@
<!--根据id查询详情-->
<select id="findCampsiteShopDetailById" resultType="com.xxfc.platform.campsite.dto.CampsiteShopDetailDTO">
select `name` as `name`,`province_name` as `provinceName`,`city_name` as `cityName`,`address` as `address`,`service_phone` as `phone`,`logo` as `logo`,
select `name` as `name`,`province_name` as `provinceName`,`city_name` as `cityName`,`address` as `address`,`service_phone` as `phone`,`logo` as `logo`,`poster_background` as `posterBackground` ,
`content` as `content`,`configure` as `configure`,`longitude` as `longitude`,`latitude` as `latitude` from `campsite_shop` where `id`=#{id}
</select>
......
......@@ -322,6 +322,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> {
setOrderId(baseOrder.getId());
}});
//车辆预定审核通过
vehicleFeign.proveVehicleBooking(orvd.getBookRecordId());
//确认免费天数
if (orvd.getFreeDays() > 0) {
......
......@@ -127,28 +127,6 @@ public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> {
orderDepositRefundRecordBiz.completeRecordStatus(crosstown.getId(), depositRefundRecordStatus);
orderMsgBiz.handelMsgDeposit(orderMQDTO.getOrderRentVehicleDetail(), orderMQDTO, userFeign.userDetailById(orderMQDTO.getUserId()).getData());
}
// else {
// //还车扣除款 剩余的 钱,再减去违章预备金
// BigDecimal originalRefundAmount = orderMQDTO.getOrderRentVehicleDetail().getReturnPayResidue();
// BigDecimal refundAmont = originalRefundAmount;
// String refundDesc = "退还剩余违章保证金:"+ refundAmont.toString();
//
// //已退还部分, 进行剩余的保留违章预备金 的退还
// //获取违章记录
// List<OrderViolation> orderViolations = orderViolationBiz.selectList(new OrderViolation(){{
// setDetailId(orderMQDTO.getOrderRentVehicleDetail().getId());
// }});
//
// if(orderViolations.size() > 0) {
// refundDesc += "(已扣除 违章金额:"+ illegalReserve.toString();
// for(OrderViolation ov : orderViolations) {
// refundDesc += ", "+ ov.getPrice();
// refundAmont = refundAmont.subtract(ov.getPrice());
// }
// refundDesc += ")";
// refundTrigger(orderMQDTO, orderMQDTO.getOrderRentVehicleDetail(), illegalReserve, originalRefundAmount, refundAmont, refundDesc, RefundStatusEnum.REFUND_DEPOSIT.getCode(), RefundTypeEnum.RESIDUE_DEPOSIT);
// }
// }
}
public void refundTrigger(BaseOrder baseOrder, OrderRentVehicleDetail orvd, BigDecimal residueAmount, BigDecimal originalRefundAmount, BigDecimal refundAmont, String refundDesc, Integer refundStatus, RefundTypeEnum refundTypeEnum) {
......@@ -162,46 +140,52 @@ public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> {
}
/**
* 租车退款流程(不含押金的通用方法)
* 租车(包括旅游)退款流程
* @param baseOrder
* @param startTime
* @param dicParentKey
*/
public void rentRefundProcess(BaseOrder baseOrder, Long startTime, String dicParentKey){
rentRefundProcess(baseOrder, BigDecimal.ZERO, startTime, dicParentKey);
}
/**
* 租车(包括旅游)退款流程(含押金)
* @param baseOrder
* @param depositAmount
* @param timeLag 与开始时间的时间差
* @param dicParentKey
*/
public void rentRefundProcess(BaseOrder baseOrder, BigDecimal depositAmount, Long timeLag, String dicParentKey) {
public void rentRefundProcess(BaseOrder baseOrder, Long timeLag, String dicParentKey) {
//计算退款金额
// 1、押金 + 租金(规则扣除)
//商品价格 - 优惠券减免的价格
BigDecimal originalRefundAmount = BigDecimal.ZERO.add(baseOrder.getGoodsAmount().subtract(baseOrder.getCouponAmount()));
StringBuilder refundDescBuilder = new StringBuilder("取消订单退款:");
if(null == depositAmount) {
depositAmount = BigDecimal.ZERO;
}else {
//触发押金退款
refundSubProcess(baseOrder, refundDescBuilder.toString(), depositAmount, depositAmount, RefundTypeEnum.DEPOSIT.getCode(), RefundStatusEnum.ALL.getCode());
}
//商品价格 - 优惠券减免的价格
BigDecimal refundGoodsAmount = calculateRefund(originalRefundAmount, timeLag, dicParentKey, refundDescBuilder);
refundGoodsAmount = refundGoodsAmount.setScale(2, RoundingMode.HALF_UP);
//退款金额
// BigDecimal refundAmount = depositAmount.add(refundGoodsAmount);
// originalRefundAmount = depositAmount.add(originalRefundAmount);
BigDecimal refundAmount = refundGoodsAmount;
//退款子流程: 订单基础,退款描述,退款金额
refundSubProcess(baseOrder, refundDescBuilder.toString(), originalRefundAmount, refundAmount, RefundTypeEnum.ORDER_FUND.getCode(), RefundStatusEnum.ALL.getCode());
}
/**
* 租车押金退款流程
* @param baseOrder
* @param depositAmount
* @param timeLag 与开始时间的时间差
* @param dicParentKey
* @param originalDeductAmount
*/
public void rentRefundDepositProcess(BaseOrder baseOrder, BigDecimal depositAmount, Long timeLag, String dicParentKey, BigDecimal originalDeductAmount) {
// 1、押金 + 租金(规则扣除)
BigDecimal originalRefundAmount = BigDecimal.ZERO.add(depositAmount);
BigDecimal refundAmount = BigDecimal.ZERO.add(depositAmount);
StringBuilder refundDescBuilder = new StringBuilder("取消订单押金退款:");
if(null != originalDeductAmount && BigDecimal.ZERO.compareTo(originalDeductAmount) < 0) {
//通过原扣除款 计算剩余款
BigDecimal residueAmount = calculateRefund(originalDeductAmount, timeLag, dicParentKey, refundDescBuilder);
residueAmount = residueAmount.setScale(2, RoundingMode.HALF_UP);
//退款金额 :押金 - (原扣除款 - 剩余款)
refundAmount = originalRefundAmount.subtract(originalDeductAmount.subtract(residueAmount));
}
//触发押金退款
refundSubProcess(baseOrder, refundDescBuilder.toString(), originalRefundAmount, refundAmount, RefundTypeEnum.DEPOSIT.getCode(), RefundStatusEnum.ALL.getCode());
}
public BigDecimal calculateRefund(BigDecimal goodsAmount, Long timeLag, String dicParentKey, StringBuilder refundDescBuilder) {
BigDecimal refundGoodsAmount = goodsAmount;
......
......@@ -8,10 +8,7 @@ import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.IntervalUtil;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.biz.*;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.contant.enumerate.RefundStatusEnum;
import com.xxfc.platform.order.contant.enumerate.RefundTypeEnum;
import com.xxfc.platform.order.contant.enumerate.*;
import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.pojo.mq.OrderMQDTO;
import com.xxfc.platform.tour.feign.TourFeign;
......@@ -49,6 +46,9 @@ public class OrderCancelBiz {
@Autowired
BaseOrderBiz baseOrderBiz;
@Autowired
OrderItemBiz orderItemBiz;
@Autowired
OrderMemberDetailBiz orderMemberDetailBiz;
......@@ -119,18 +119,34 @@ public class OrderCancelBiz {
setOrderId(baseOrder.getId());
}});
//原退还押金
BigDecimal freeDayAmount = BigDecimal.ZERO;
//判断是否使用免费天数,并且进行扣款
if(null != orvd.getFreeDays() && orvd.getFreeDays() > 0) {
OrderItem orderItem = orderItemBiz.selectOne(new OrderItem(){{
setType(ItemTypeEnum.VEHICLE_MODEL.getCode());
setOrderId(baseOrder.getId());
}});
freeDayAmount = orderItem.getUnitPrice().multiply(new BigDecimal(orvd.getFreeDays()+ ""));
}
//如果超过出发时间,不能取消订单
//根据时间处理goodsAmount
//获取出发时间 到现在 距离时间
Long timeLag = orvd.getStartTime() - System.currentTimeMillis();
if(timeLag < 0) {
throw new BaseException(ResultCode.FAILED_CODE, new HashSet<String>(){{
add("已超过出发时间,不能取消订单");
}});
}
//后面允许开始时间过后可以取消订单
// if(timeLag < 0) {
// throw new BaseException(ResultCode.FAILED_CODE, new HashSet<String>(){{
// add("已超过出发时间,不能取消订单");
// }});
// }
//退款流程
orderRefundBiz.rentRefundProcess(hasUpdateOrder, orvd.getDeposit(), timeLag, APP_ORDER+ "_"+ RENT_REFUND);
//退押金
orderRefundBiz.rentRefundDepositProcess(hasUpdateOrder, orvd.getDeposit(), timeLag, APP_ORDER+ "_"+ RENT_REFUND, freeDayAmount);
//退订单款
orderRefundBiz.rentRefundProcess(hasUpdateOrder, timeLag, APP_ORDER+ "_"+ RENT_REFUND);
//已付款的取消订单发送消息
try {
......
......@@ -71,74 +71,61 @@ public class RentDepositJobHandler extends IJobHandler {
UserFeign userFeign;
@Override
public ReturnT<String> execute(String idLastNumInterval) throws Exception {
public ReturnT<String> execute(String idLastNumInterval) {
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
Integer rentDepositAutoRefundTime = new Integer(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.RENT_DEPOSIT_AUTO_REFUND_TIME).getDetail());
try {
// for(int i = 0; i < 10; i++) {
// if(IntervalUtil.staticIsInTheInterval(String.valueOf(i), idLastNumInterval)) {
//三十天
List<BaseOrder> lists = baseOrderBiz.selectByExample(new Example.Builder(BaseOrder.class)
//订单已完成的租车订单
.where(WeekendSqls.<BaseOrder>custom().andEqualTo(BaseOrder::getType, OrderTypeEnum.RENT_VEHICLE.getCode())
.andEqualTo(BaseOrder::getStatus, OrderStatusEnum.ORDER_FINISH.getCode()) //已完成的订单
.andEqualTo(BaseOrder::getRefundStatus, RefundStatusEnum.RESIDUE_ILLEGAL.getCode()) //已归还了部分押金
.andLessThanOrEqualTo(BaseOrder::getCrtTime, DateUtil.date(System.currentTimeMillis() - (rentDepositAutoRefundTime * 60 * 1000)))
List<BaseOrder> lists = baseOrderBiz.selectByExample(new Example.Builder(BaseOrder.class)
//订单已完成的租车订单
.where(WeekendSqls.<BaseOrder>custom().andEqualTo(BaseOrder::getType, OrderTypeEnum.RENT_VEHICLE.getCode())
.andEqualTo(BaseOrder::getStatus, OrderStatusEnum.ORDER_FINISH.getCode()) //已完成的订单
.andEqualTo(BaseOrder::getRefundStatus, RefundStatusEnum.RESIDUE_ILLEGAL.getCode()) //已归还了部分押金
.andLessThanOrEqualTo(BaseOrder::getCrtTime, DateUtil.date(System.currentTimeMillis() - (rentDepositAutoRefundTime * 60 * 1000)))
// .andLike(BaseOrder::getId, "%"+ i)
).build());
//处理自动退剩余押金
for(BaseOrder baseOrder : lists) {
OrderRentVehicleDetail orvd = orderRentVehicleBiz.selectOne(new OrderRentVehicleDetail() {{
setOrderId(baseOrder.getId());
}});
Integer crosstownTypeEnum;
//判断是否定损过
if(SYS_TRUE.equals(orvd.getFixedLossStatus())) {
crosstownTypeEnum = CrosstownTypeEnum.FIXED_LOSS.getCode();
}else {
crosstownTypeEnum = CrosstownTypeEnum.ARRIVE.getCode();
}
OrderVehicleCrosstown crosstown = crosstownBiz.selectOne(new OrderVehicleCrosstown(){{
setOrderId(baseOrder.getId());
setType(crosstownTypeEnum);
}});
if(crosstown.getCrtTime().compareTo(System.currentTimeMillis() - (rentDepositAutoRefundTime * 60 * 1000)) < 0) {
OrderViolation orderViolation = orderViolationBiz.selectOne(new OrderViolation(){{
setDetailId(orvd.getId());
setIsDel(SYS_FALSE);
}});
String refundDesc = "退还押金:";
BigDecimal refundAmont;
if(null != orderViolation) {
//还车扣除款 剩余的 钱,再减去违章预备金
refundAmont = orvd.getReturnPayResidue().subtract(orderViolation.getPrice());
refundDesc += refundAmont.toString()+ "(已扣除 违章扣款:"+ refundAmont.toString();
refundDesc += ")";
}else {
refundAmont = orvd.getReturnPayResidue();
refundDesc += refundAmont.toString();
}
orderRefundBiz.refundTrigger(baseOrder, orvd, BigDecimal.ZERO, orvd.getReturnPayResidue(), refundAmont, refundDesc, RefundStatusEnum.REFUND_DEPOSIT.getCode(), RefundTypeEnum.RESIDUE_DEPOSIT);
orderDepositRefundRecordBiz.completeRecordStatus(crosstown.getId(), DepositRefundStatus.VIOLATIONARRIVAL);
orderMsgBiz.handelMsgDeposit(orvd, baseOrder, userFeign.userDetailById(baseOrder.getUserId()).getData());
}
//获取交车时间
// List<OrderVehicleCrosstown> crosstowns = crosstownBiz.selectByExample(
// new Example.Builder(BaseOrder.class)
// .where(WeekendSqls.<OrderVehicleCrosstown>custom()
// .andIn(OrderVehicleCrosstown::getType, Lists.newArrayList(CrosstownTypeEnum.ARRIVE.getCode(), CrosstownTypeEnum.FIXED_LOSS.getCode()))
// .andEqualTo(OrderVehicleCrosstown::getOrderId, baseOrder.getId())).build());
).build());
//处理自动退剩余押金
for(BaseOrder baseOrder : lists) {
OrderRentVehicleDetail orvd = orderRentVehicleBiz.selectOne(new OrderRentVehicleDetail() {{
setOrderId(baseOrder.getId());
}});
Integer crosstownTypeEnum;
//判断是否定损过
if(SYS_TRUE.equals(orvd.getFixedLossStatus())) {
crosstownTypeEnum = CrosstownTypeEnum.FIXED_LOSS.getCode();
}else {
crosstownTypeEnum = CrosstownTypeEnum.ARRIVE.getCode();
}
OrderVehicleCrosstown crosstown = crosstownBiz.selectOne(new OrderVehicleCrosstown(){{
setOrderId(baseOrder.getId());
setType(crosstownTypeEnum);
}});
if(crosstown.getCrtTime().compareTo(System.currentTimeMillis() - (rentDepositAutoRefundTime * 60 * 1000)) < 0) {
OrderViolation orderViolation = orderViolationBiz.selectOne(new OrderViolation(){{
setDetailId(orvd.getId());
setIsDel(SYS_FALSE);
}});
String refundDesc = "退还押金:";
BigDecimal refundAmont;
if(null != orderViolation) {
//还车扣除款 剩余的 钱,再减去违章预备金
refundAmont = orvd.getReturnPayResidue().subtract(orderViolation.getPrice());
refundDesc += refundAmont.toString()+ "(已扣除 违章扣款:"+ refundAmont.toString();
refundDesc += ")";
}else {
refundAmont = orvd.getReturnPayResidue();
refundDesc += refundAmont.toString();
}
orderRefundBiz.refundTrigger(baseOrder, orvd, BigDecimal.ZERO, orvd.getReturnPayResidue(), refundAmont, refundDesc, RefundStatusEnum.REFUND_DEPOSIT.getCode(), RefundTypeEnum.RESIDUE_DEPOSIT);
orderDepositRefundRecordBiz.completeRecordStatus(crosstown.getId(), DepositRefundStatus.VIOLATIONARRIVAL);
orderMsgBiz.handelMsgDeposit(orvd, baseOrder, userFeign.userDetailById(baseOrder.getUserId()).getData());
}
// }
// }
}
ReturnT returnT = new ReturnT();
returnT.setCode(100);
returnT.setMsg("成功");
......
......@@ -97,12 +97,19 @@ public class BackStageOrderController extends CommonBaseController implements Us
if (userIds != null && userIds.size() > 0) {
ObjectRestResponse<List<AppUserVo>> objectRestResponse = userFeign.getByUserIds(userIds);
log.info("获取用户信息:objectRestResponse = {}", objectRestResponse.getData());
Map<String, AppUserVo> appUserVoMap = objectRestResponse.getData() == null ? new HashMap<String, AppUserVo>()
: objectRestResponse.getData().parallelStream().collect(Collectors.toMap(v -> v.getUserid().toString().trim(), v -> v));
Map<Integer, AppUserVo> appvoMap = new HashMap<Integer, AppUserVo>();
if(objectRestResponse.getData() != null) {
for(AppUserVo appUserVo : objectRestResponse.getData()) {
if(appUserVo != null) {
appvoMap.put(appUserVo.getUserid(), appUserVo);
}
}
}
for (OrderListVo orderPageVO : list) {
AppUserVo appUserVo = appUserVoMap.get(orderPageVO.getUserId().toString());
if (null != appUserVo) {
AppUserVo appUserVo = appvoMap.get(orderPageVO.getUserId());
if(appUserVo != null) {
orderPageVO.setTelephone(appUserVo.getUsername());
orderPageVO.setUsername(appUserVo.getNickname());
}
......@@ -174,6 +181,24 @@ public class BackStageOrderController extends CommonBaseController implements Us
dto.setEndTime(new Date().getTime());
}
}
UserDTO userDTO = getAdminUserInfo();
if (userDTO == null) {
return ObjectRestResponse.succ(new PageDataVO<>());
}
List<BranchCompany> branchCompanies = vehicleFeign.companyAll(userDTO.getDataAll(), userDTO.getDataCompany(), userDTO.getDataZone());
List<Integer> companyIds = branchCompanies.stream().map(BranchCompany::getId).collect(Collectors.toList());
if(dto.getStartCompanyId() != null) {
if(companyIds.size() > 0) {
if(companyIds.contains(dto.getStartCompanyId())) {
companyIds.clear();
companyIds.add(dto.getStartCompanyId());
} else {
return ObjectRestResponse.succ();
}
} else {
companyIds.add(dto.getStartCompanyId());
}
}
Query query = new Query(dto);
PageDataVO<OrderPageVO> pageDataVO = PageDataVO.pageInfo(query, () -> baseOrderBiz.getRentVehicle(query.getSuper()));
for (OrderPageVO orderPageVO : pageDataVO.getData()) {
......
......@@ -8,10 +8,14 @@ import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.vo.PageParam;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.biz.OrderItemBiz;
import com.xxfc.platform.order.biz.OrderRefundBiz;
import com.xxfc.platform.order.biz.inner.OrderCancelBiz;
import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.entity.OrderRefund;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.universal.constant.DictionaryKey;
import lombok.Data;
......@@ -23,11 +27,11 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
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.xxfc.platform.universal.constant.DictionaryKey.TOUR_IN_REFUND;
import static com.xxfc.platform.universal.constant.DictionaryKey.TOUR_REFUND;
import static com.xxfc.platform.universal.constant.DictionaryKey.*;
@Controller
@RequestMapping("orderRefund")
......@@ -39,6 +43,9 @@ public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRe
@Autowired
OrderRefundBiz orderRefundBiz;
@Autowired
OrderItemBiz orderItemBiz;
@Autowired
UserFeign userFeign;
......@@ -67,8 +74,29 @@ public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRe
case RENT_VEHICLE:
orderRefundAmount = orderRefundBiz.calculateRefund(orderPageVO.getGoodsAmount().subtract(orderPageVO.getCouponAmount())
, orderPageVO.getOrderRentVehicleDetail().getStartTime() - System.currentTimeMillis()
, DictionaryKey.APP_ORDER+ "_"+ DictionaryKey.RENT_REFUND
, DictionaryKey.APP_ORDER+ "_"+ RENT_REFUND
, refundDescBuilder);
OrderRentVehicleDetail orvd = orderPageVO.getOrderRentVehicleDetail();
Long timeLag = orvd.getStartTime() - System.currentTimeMillis();
//原退还押金
BigDecimal originalDeductAmount = BigDecimal.ZERO;
BigDecimal originalRefundAmount = BigDecimal.ZERO.add(orvd.getDeposit());
//判断是否使用免费天数,并且进行扣款
if(null != orvd.getFreeDays() && orvd.getFreeDays() > 0) {
refundDescBuilder = new StringBuilder("");
OrderItem orderItem = orderItemBiz.selectOne(new OrderItem(){{
setType(ItemTypeEnum.VEHICLE_MODEL.getCode());
setOrderId(orderPageVO.getId());
}});
originalDeductAmount = orderItem.getUnitPrice().multiply(new BigDecimal(orvd.getFreeDays()+ ""));
}
BigDecimal residueAmount = orderRefundBiz.calculateRefund(originalDeductAmount, timeLag, APP_ORDER+ "_"+ RENT_REFUND, refundDescBuilder);
residueAmount = residueAmount.setScale(2, RoundingMode.HALF_UP);
//押金剩余款 :押金 - (原扣除款 - 剩余款)
//退款金额 :订单剩余款 + 押金剩余款
orderRefundAmount = orderRefundAmount.add(originalRefundAmount.subtract(originalDeductAmount.subtract(residueAmount)));
break;
case TOUR:
//判断是省内还是省外
......
......@@ -192,8 +192,12 @@
<if test="startTime != null and (status == 5 || status == 6 || status == -1)">
and r.end_time between #{startTime} and #{endTime}
</if>
<if test="startCompanyId != null">
and r.start_company_id = #{startCompanyId}
<if test="companyIds != null and companyIds.size > 0">
and r.start_company_id in
<foreach collection="companyIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
<if test="status == 4">
order by r.start_time
......
......@@ -36,7 +36,7 @@ public class TourGoodController extends BaseController<TourGoodBiz, TourGood> {
public ObjectRestResponse<TourGood> getGoodList(@RequestParam(value = "page", required = true) Integer page, @RequestParam(value = "limit",defaultValue = "10") Integer limit,
@RequestParam(value = "query", required = false) String query, @RequestParam(value = "latitude", required = false) Double latitude,
@RequestParam(value = "longitude", required = false) Double longitude, @RequestParam(value = "tagId", required = false) Integer tagId,
@RequestParam(value = "distance", defaultValue = "0.00") Double distance) {
@RequestParam(value = "distance", defaultValue = "100") Double distance) {
return baseBiz.getGoodList(page, limit, query, latitude, longitude, tagId, distance);
}
......
......@@ -7,19 +7,12 @@
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xx-user-behavior-collect</artifactId>
<packaging>pom</packaging>
<groupId>com.xxfc.platform</groupId>
<modules>
<module>xx-user-behavior-api</module>
<module>xx-user-behavior-server</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<artifactId>xx-behavior</artifactId>
</project>
\ No newline at end of file
......@@ -3,17 +3,11 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>xx-user-behavior-collect</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-user-behavior-api</artifactId>
<dependencies>
<dependency>
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
......@@ -16,7 +16,7 @@ public enum BehaviorEnum {
/**
* 立即前往(弹窗)
*/
DIALOG_WINDOW_TO(1, "立即前往"),
DIALOG_WINDOW_TO(1, "立即前往(弹窗)"),
/**
* banner 点击
......@@ -26,27 +26,47 @@ public enum BehaviorEnum {
/**
* 精彩活动点击
*/
WONDERFUL_ACTIVITY_CLICK(3, "精活动点击"),
WONDERFUL_ACTIVITY_CLICK(3, "精活动点击"),
/**
* 注册
*/
REGISTRY(4, "注册"),
REGISTRY(4, "注册成功"),
/**
* 活动页面访问量
*/
ACTIVITY_VISITS(5,"活动页面访问"),
/**
* 领取任务
*/
CLAIM_TASK(5, "领取任务"),
CLAIM_TASK(6, "领取任务"),
/**
* 分享
*/
SHARE(6, "分享"),
SHARE(7, "成功分享"),
/**
* App访问
*/
APP_VISIT_COUNT(8,"App访问量"),
/**
* 成功邀请人数
*/
SUCCESS_INVIT(9,"成功邀请人数"),
/**
* 成功邀请人数大于10
*/
SUCCESS_MORE_10_INVIT(10,"成功邀请人数大于10"),
/**
* 邀请
* 立即领取(活动详情页)
*/
INVITATION(7, "邀请");
IMMEDIATELY_TO_RECEIVE(11,"立即领取(活动详情页)");
BehaviorEnum(int code, String name) {
this.code = code;
......
package com.xxfc.platform.user.behavior.dto;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/13 14:16
*/
@Data
public class ActivityBehaviorDTO {
private Integer activityId;
private Integer behaviorTypeId;
}
package com.xxfc.platform.user.behavior.dto;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/13 17:05
*/
@Data
public class ActivityBehaviorRelationDTO {
/**
* @see com.xxfc.platform.user.behavior.common.BehaviorEnum
* 行为类型
*/
private Integer type;
/**
* 业务id (banner 精彩活动 app弹窗)
*/
private Integer bizId;
/**
* 活动id
*/
private Integer activityId;
}
package com.xxfc.platform.user.behavior.dto;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/13 14:16
*/
@Data
public class BehaviorTypeDTO {
private String name;
private Integer code;
}
package com.xxfc.platform.user.behavior.entity;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/13 14:02
*/
@Data
@Table(name = "activity_behavior")
public class ActivityBehavior {
@Id
@GeneratedValue(generator = "JDBC")
private Integer id;
@Column(name = "activity_id")
private Integer activityId;
@Column(name = "behavior_type_id")
private Integer behaviorTypeId;
}
package com.xxfc.platform.user.behavior.entity;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/13 17:05
*/
@Data
@Table(name = "activity_behavior_relation")
public class ActivityBehaviorRelation {
@Id
@GeneratedValue(generator = "JDBC")
private Integer id;
/**
* @see com.xxfc.platform.user.behavior.common.BehaviorEnum
* 行为类型
*/
private Integer type;
/**
* 业务id (banner 精彩活动 app弹窗)
*/
@Column(name = "biz_id")
private Integer bizId;
/**
* 活动id
*/
@Column(name = "activity_id")
private Integer activityId;
}
package com.xxfc.platform.user.behavior.entity;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/13 14:02
*/
@Data
@Table(name = "behavior_type")
public class BehaviorType {
@Id
@GeneratedValue(generator = "JDBC")
private Integer id;
@Column(name = "name")
private String name;
@Column(name = "code")
private Integer code;
}
......@@ -8,6 +8,7 @@ import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Objects;
/**
......@@ -61,4 +62,17 @@ public class CustomerBehaviorNotes implements Serializable {
@Column(name = "request_id")
@ApiModelProperty(value = "请求id")
private String requestId;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CustomerBehaviorNotes that = (CustomerBehaviorNotes) o;
return Objects.equals(customerId, that.customerId);
}
@Override
public int hashCode() {
return Objects.hash(customerId);
}
}
package com.xxfc.platform.user.behavior.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/12 18:32
*/
@Data
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public class BehaviorNoteCollectVo implements Serializable {
/**
* @see com.xxfc.platform.user.behavior.common.BehaviorEnum
* 行为
*/
private String behavior;
/**
* 日访问数
*/
private long p_count;
/**
* 日平均访问数
*/
private long p_avg_count;
/**
* 用户每日访问总数
*/
private long u_count;
/**
* 用户每日平均访问总数
*/
private long u_avg_count;
}
......@@ -3,27 +3,48 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>xx-user-behavior-collect</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform-web</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-user-behavior-server</artifactId>
<dependencies>
<!-- 自己项目 -->
<dependency>
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform-web</artifactId>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-user-behavior-api</artifactId>
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-admin-api</artifactId>
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>xx-user-behavior-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-activity-api</artifactId>
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
......@@ -2,7 +2,9 @@ package com.xxfc.platform.user.behavior;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import tk.mybatis.spring.annotation.MapperScan;
/**
......@@ -12,8 +14,12 @@ import tk.mybatis.spring.annotation.MapperScan;
* @data 2019/8/12 10:04
*/
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {"com.xxfc.platform.*.feign","com.github.wxiaoqi.security.*.feign"})
@MapperScan(basePackages = "com.xxfc.platform.user.behavior.mapper")
@SpringBootApplication
@SpringBootApplication(scanBasePackages ={
"com.xxfc.platform",
"com.github.wxiaoqi.security.admin.support"
},exclude = {MongoAutoConfiguration.class})
public class UserBeHaviorApplication {
public static void main(String[] args) {
SpringApplication.run(UserBeHaviorApplication.class,args);
......
package com.xxfc.platform.user.behavior.biz;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.user.behavior.dto.ActivityBehaviorDTO;
import com.xxfc.platform.user.behavior.entity.ActivityBehavior;
import com.xxfc.platform.user.behavior.mapper.ActivityBehaviorMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/13 14:10
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class ActivityBehaviorBiz extends BaseBiz<ActivityBehaviorMapper, ActivityBehavior> {
public List<ActivityBehaviorDTO> findActivityBehaviorsByActivityId(Integer activityId){
return mapper.selectbyActivityId(activityId);
}
}
package com.xxfc.platform.user.behavior.biz;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.user.behavior.dto.ActivityBehaviorRelationDTO;
import com.xxfc.platform.user.behavior.entity.ActivityBehaviorRelation;
import com.xxfc.platform.user.behavior.mapper.ActivityBehaviorRelationMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/13 17:12
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class ActivityBehaviorRelationBiz extends BaseBiz<ActivityBehaviorRelationMapper, ActivityBehaviorRelation> {
public List<ActivityBehaviorRelationDTO> findActivityBehaviorRelationsByActivityId(Integer activityId){
return mapper.selectAllByActivityId(activityId);
}
}
package com.xxfc.platform.user.behavior.biz;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.user.behavior.dto.BehaviorTypeDTO;
import com.xxfc.platform.user.behavior.entity.BehaviorType;
import com.xxfc.platform.user.behavior.mapper.BehaviorTypeMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/13 14:09
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class BehaviorTypeBiz extends BaseBiz<BehaviorTypeMapper, BehaviorType> {
public List<BehaviorTypeDTO> findBehaviorTypesByIds(List<Integer> typeIds){
return mapper.selectAllByIdList(typeIds);
}
}
package com.xxfc.platform.user.behavior.mapper;
import com.xxfc.platform.user.behavior.dto.ActivityBehaviorDTO;
import com.xxfc.platform.user.behavior.entity.ActivityBehavior;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/13 14:10
*/
public interface ActivityBehaviorMapper extends Mapper<ActivityBehavior> {
@Select("select `activity_id`,`behavior_type_id` from `activity_behavior` where `activity_id`=#{activityId}")
@Results(value = {
@Result(column = "activity_id",property = "activityId"),
@Result(column = "behavior_type_id",property = "behaviorTypeId")
})
List<ActivityBehaviorDTO> selectbyActivityId(@Param("activityId") Integer activityId);
}
package com.xxfc.platform.user.behavior.mapper;
import com.xxfc.platform.user.behavior.dto.ActivityBehaviorRelationDTO;
import com.xxfc.platform.user.behavior.entity.ActivityBehaviorRelation;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/13 17:11
*/
public interface ActivityBehaviorRelationMapper extends Mapper<ActivityBehaviorRelation> {
@Select("select `type`,`biz_id`,`activity_id` from `activity_behavior_relation` where `activity_id`=#{activityId}")
@Results(value = {
@Result(property = "type",column = "type"),
@Result(property = "bizId",column = "biz_id"),
@Result(property = "activityId",column = "activity_id")
})
List<ActivityBehaviorRelationDTO> selectAllByActivityId(@Param("activityId") Integer activityId);
}
package com.xxfc.platform.user.behavior.mapper;
import com.xxfc.platform.user.behavior.dto.BehaviorTypeDTO;
import com.xxfc.platform.user.behavior.entity.BehaviorType;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.additional.idlist.IdListMapper;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/13 14:13
*/
public interface BehaviorTypeMapper extends Mapper<BehaviorType>, IdListMapper<BehaviorType,Integer> {
@Select("<script>select `name`,`code` from behavior_type where `id` in <foreach collection='typeIds' open='(' item='typeId' separator=',' close=')'> #{typeId}</foreach></script>")
@Results(value = {
@Result(column = "name",property = "name"),
@Result(column ="code",property = "code")
})
List<BehaviorTypeDTO> selectAllByIdList(@Param("typeIds") List<Integer> typeIds);
}
package com.xxfc.platform.user.behavior.mapper;
import com.xxfc.platform.user.behavior.entity.CustomerBehaviorNotes;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
* 用户行为记录表
*
......@@ -11,5 +14,10 @@ import tk.mybatis.mapper.common.Mapper;
* @date 2019-08-12 14:03:55
*/
public interface CustomerBehaviorNotesMapper extends Mapper<CustomerBehaviorNotes> {
List<CustomerBehaviorNotes> selectByActivityIdAndTime(@Param("activityId") Integer activityId,@Param("startTime") Long startTime,@Param("endTime") Long endTime);
long selectAppVvisitsByType(@Param("code") int code);
List<CustomerBehaviorNotes> selectAllByTypeIdsAndTime(@Param("bizIds") List<Integer> bizIds,@Param("startTime") Long startTime,@Param("endTime") Long endTime);
}
......@@ -21,13 +21,13 @@ import java.util.Objects;
* @data 2019/8/12 14:14
*/
@RestController
@RequestMapping("customerBehaviorNotes")
@RequestMapping("/customerBehaviorNotes")
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class CustomerBehaviorNotesController {
private final CustomerBehaviorNotesBiz customerBehaviorNotesBiz;
@PostMapping("app/unauth/save")
@PostMapping("/app/unauth/save")
public ObjectRestResponse<Void> saveCustomerBehavior(@RequestBody CustomerBehaviorNoteDTO customerBehaviorNoteDTO, AppUserDTO appUserDTO) {
if (Objects.nonNull(appUserDTO.getUserid())) {
customerBehaviorNoteDTO.setCustomerId(String.valueOf(appUserDTO.getUserid()));
......
package com.xxfc.platform.user.behavior.rest.admin;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.user.behavior.biz.CustomerBehaviorNotesBiz;
import com.xxfc.platform.user.behavior.vo.BehaviorNoteCollectVo;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description 用户行为日志*后台统计
* @description 用户行为日志*后台统计
* @data 2019/8/12 15:16
*/
@RestController
......@@ -19,4 +22,11 @@ public class CustomerBehaviorNotesAdminController {
private final CustomerBehaviorNotesBiz customerBehaviorNotesBiz;
@GetMapping("/collect/{activityId}")
public ObjectRestResponse<List<BehaviorNoteCollectVo>> findCollectByActivityId(@PathVariable(value = "activityId") Integer activityId,
@RequestParam(value = "startTime", required = false) Long startTime,
@RequestParam(value = "endTime", required = false) Long endTime) {
List<BehaviorNoteCollectVo> behaviorNoteCollectVos = customerBehaviorNotesBiz.findBehaviorCollectByActivityId(activityId, startTime, endTime);
return ObjectRestResponse.succ(behaviorNoteCollectVos);
}
}
......@@ -3,7 +3,7 @@
<mapper namespace="com.xxfc.platform.user.behavior.mapper.CustomerBehaviorNotesMapper">
<!-- 可根据自己的需求,是否要使用 -->
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.user.behavior.entity.CustomerBehaviorNotes" id="customerBehaviorNotesMap">
<result property="id" column="id"/>
<result property="customerId" column="customer_id"/>
......@@ -11,5 +11,40 @@
<result property="type" column="type"/>
<result property="typeId" column="type_id"/>
<result property="crtTime" column="crt_time"/>
<result property="requestId" column="request_id"/>
</resultMap>
<select id="selectByActivityIdAndTime" resultMap="customerBehaviorNotesMap">
select * from `customer_behavior_notes` where `type_id`=#{activityId}
<if test="startTime != null and endTime !=null">
and `crt_time` between #{startTime} and #{endTime}
</if>
<if test="startTime != null and endTime == null">
and <![CDATA[`crt_time` >= #{startTime}]]>
</if>
<if test="endTime != null and startTime == null">
and <![CDATA[ `crt_time` <= #{endTime}]]>
</if>
</select>
<select id="selectAppVvisitsByType" resultType="long">
select count(id) from `customer_behavior_notes` where `type`=#{code}
</select>
<select id="selectAllByTypeIdsAndTime" resultMap="customerBehaviorNotesMap">
select * from `customer_behavior_notes` where `type_id` in
<foreach collection="bizIds" item="bizId" open="(" close=")" separator=",">
#{bizId}
</foreach>
<if test="startTime != null != null and endTime !=null">
and `crt_time` between #{startTime} and #{endTime}
</if>
<if test="startTime != null and endTime == null">
and <![CDATA[`crt_time` >= #{startTime}]]>
</if>
<if test="endTime != null and startTime == null">
and <![CDATA[ `crt_time` <= #{endTime}]]>
</if>
and `type` in(0,1,2,3)
</select>
</mapper>
\ No newline at end of file
......@@ -53,6 +53,7 @@ public enum ResCode {
ORDER_DETAIL_IS_NOT_EXIST(10001, "订单详情不可查询"),
YOU_AUTH_FAIL(-2,"无权限查看此信息"),
ORDER_IS_NOT_PAY(10002, "订单未支付"),
USER_IS_EXIST(10003, "用户名已存在");
;
/**
* 返回码
......
......@@ -2,9 +2,9 @@ package com.xxfc.platform.vehicle.biz;
import com.alibaba.fastjson.JSON;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.xxfc.platform.vehicle.common.CustomIllegalParamException;
import com.xxfc.platform.vehicle.constant.ConstantType;
import com.xxfc.platform.vehicle.constant.RedisKey;
import com.xxfc.platform.vehicle.entity.Constant;
......@@ -159,7 +159,7 @@ public class ConstantBiz extends BaseBiz<ConstantMapper,Constant> {
return Boolean.FALSE;
}
if(constants.size()>MAX_BATCH_SIZE_CONSTANT_UPDATE){
throw new IllegalArgumentException(" exceed max batch size");
throw new BaseException(" exceed max batch size");
}
return Boolean.TRUE;
......@@ -198,7 +198,7 @@ public class ConstantBiz extends BaseBiz<ConstantMapper,Constant> {
return 0;
}
if(codes.size()>MAX_BATCH_SIZE_CONSTANT_UPDATE){
throw new IllegalArgumentException(" exceed max batch size");
throw new BaseException(" exceed max batch size");
}
List<String> delCodes = Lists.newArrayList();
for(Integer code:codes){
......@@ -242,12 +242,12 @@ public class ConstantBiz extends BaseBiz<ConstantMapper,Constant> {
*/
public Boolean checkIfExists(Integer type,Integer code){
if(!ConstantType.exists(type)){
throw new CustomIllegalParamException(" no such type of constant");
throw new BaseException(" no such type of constant");
}
List<ConstantVo> constantVoList = getAllConstantByType(type);
if(CollectionUtils.isEmpty(constantVoList)){
throw new CustomIllegalParamException(" no such code of constant in relative type");
throw new BaseException(" no such code of constant in relative type");
}
for(ConstantVo constantVo:constantVoList){
......@@ -255,7 +255,7 @@ public class ConstantBiz extends BaseBiz<ConstantMapper,Constant> {
return Boolean.TRUE;
}
}
throw new CustomIllegalParamException(" no such code of constant in relative type");
throw new BaseException(" no such code of constant in relative type");
}
}
......@@ -3,8 +3,8 @@ package com.xxfc.platform.vehicle.biz;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.google.common.collect.Lists;
import com.xxfc.platform.vehicle.common.CustomIllegalParamException;
import com.xxfc.platform.vehicle.constant.RedisKey;
import com.xxfc.platform.vehicle.constant.RegionType;
import com.xxfc.platform.vehicle.entity.SysRegion;
......@@ -42,7 +42,7 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> {
public List<SysRegion> getRegionsByCodes(List<Long> ids){
List<String> redisCacheKeys = Lists.newArrayList();
if(CollectionUtils.isEmpty(ids)){
throw new CustomIllegalParamException("empty id list");
throw new BaseException("empty id list");
}
for(Long id:ids){
redisCacheKeys.add(RedisKey.SYS_REGION_CACHE_PREFIX+id);
......
......@@ -3,10 +3,10 @@ package com.xxfc.platform.vehicle.biz;
import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.google.common.collect.Maps;
import com.xxfc.platform.vehicle.common.CustomIllegalParamException;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import com.xxfc.platform.vehicle.entity.VehicleBookHourInfo;
import com.xxfc.platform.vehicle.mapper.VehicleBookHourInfoMapper;
......@@ -39,15 +39,15 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V
startDate = simpleDateFormat.parse(bookStartDate);
endDate = simpleDateFormat.parse(bookEndDate);
}catch (Exception e) {
e.printStackTrace();
}
//判定时间是否合法
if (bookStartDate.compareTo(DateTime.now().toString(DEFAULT_DATE_TIME_FORMATTER)) < 0) {
throw new CustomIllegalParamException(ResultCode.getMsg(ResultCode.ONLY_BOOK_FROM_TODAY));
throw new BaseException(ResultCode.ONLY_BOOK_FROM_TODAY);
}
if (bookStartDate.compareTo(bookEndDate) > 0) {
throw new CustomIllegalParamException("预定开始日期不能大于结束日期!");
throw new BaseException(ResultCode.ONLY_BOOK_FROM_TODAY);
}
Map<String, Integer> predictableHours = Maps.newHashMap();
//预定开始小时
......
......@@ -12,7 +12,6 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.xxfc.platform.vehicle.common.CustomIllegalParamException;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.BookType;
import com.xxfc.platform.vehicle.constant.RedisKey;
......@@ -273,7 +272,7 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic
if(params.get("selectedMonth") != null) {
String selectedMonth = (String)params.get("selectedMonth");
if(StringUtils.isBlank(selectedMonth)){
throw new CustomIllegalParamException(" no month selected ");
throw new BaseException(" no month selected ");
}
DateTime selectedMonthDate = DateTime.parse(selectedMonth,YEARMONTH_DATE_TIME_FORMATTER);
if(selectedMonthDate.compareTo(DateTime.now().plusMonths(-1).withDayOfMonth(1).withMillisOfDay(0)) < 0){
......
......@@ -9,16 +9,12 @@ import com.xxfc.platform.vehicle.biz.VehiclePlatCataBiz;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.common.VehicleBaseController;
import com.xxfc.platform.vehicle.entity.VehiclePlatCata;
import com.xxfc.platform.vehicle.pojo.*;
import lombok.Data;
import com.xxfc.platform.vehicle.pojo.Cascade;
import com.xxfc.platform.vehicle.pojo.CataVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Update;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import sun.java2d.pipe.AATextRenderer;
import java.util.Arrays;
@RestController
@RequestMapping("/cata")
......@@ -225,7 +221,7 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata
return RestResponse.data(baseBiz.getByPage(vehiclePageQueryVo));
} catch (JSONException ex) {
return RestResponse.code(ResCode.INVALID_REST_REQ_PARAM.getCode());
} catch (CustomIllegalParamException ex) {
} catch (BaseException ex) {
return RestResponse.code(ResCode.INVALID_REST_REQ_PARAM.getCode());
}
}*/
......
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