Commit 47ebdf28 authored by zhangzc's avatar zhangzc

添加消息接口

添加议价参数
parent b4e939ac
......@@ -52,4 +52,5 @@ public class AccountConstants {
* 消息类型
**/
public static final Integer MESSAGE_TYPE_BILL_CONFIRM = 101; // 账单生成后用户确认消息
public static final Integer MESSAGE_TYPE_WAYBILL_GRAB = 102; // 司机抢单结果提醒消息
}
......@@ -132,6 +132,7 @@ public class GrabController {
vo.setRequiredDeliveryTime(object.getLong("requiredDeliveryTime"));
vo.setRequiredReceiveTime(object.getLong("requiredReceiveTime"));
vo.setCreateTime(object.getLong("createTime"));
vo.setBargainRange(object.getInteger("bargainRange"));
records.add(vo);
}
......@@ -156,6 +157,7 @@ public class GrabController {
reqJson.put("driverId", orderGrabbingForm.getDriverId());
reqJson.put("vehicleId", orderGrabbingForm.getVehicleId());
reqJson.put("signData", orderGrabbingForm.getSignData());
reqJson.put("bargainFreight", orderGrabbingForm.getBargainFreight());
log.info(reqJson.toJSONString());
JSONObject result = tmsGrabInterface.grabOrder(reqJson);
log.info(result.toJSONString());
......
......@@ -46,7 +46,7 @@ public class OrderGrabbingForm {
*/
@DecimalMax(value = "999999999.999999", message = "运费司机议价单价不合法", groups = {ValidatorInsert.class})
@DecimalMin(value = "0.000000", message = "运费司机议价单价不合法", groups = {ValidatorInsert.class})
private BigDecimal freightUnitPriceOutput;
private BigDecimal bargainFreight;
/**
* 司机签名数据
......
......@@ -119,4 +119,9 @@ public class GrabListItemVO {
* 抢单创建时间
*/
private Long createTime;
/**
* 议价范围百分比
*/
private Integer bargainRange;
}
package com.esv.freight.app.module.message.controller;
import com.esv.freight.app.common.response.EResponse;
import com.esv.freight.app.common.validator.groups.ValidatorDelete;
import com.esv.freight.app.common.validator.groups.ValidatorDetail;
import com.esv.freight.app.common.validator.groups.ValidatorList;
import com.esv.freight.app.common.validator.groups.ValidatorUpdate;
import com.esv.freight.app.common.vo.PageResultVO;
import com.esv.freight.app.module.message.form.MessageForm;
import com.esv.freight.app.module.message.service.BusinessMessageService;
import com.esv.freight.app.module.message.validator.groups.ValidatorDeleteByType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/**
* @description: 司机消息Controller
......@@ -21,23 +29,43 @@ import org.springframework.web.bind.annotation.RestController;
@Validated
public class DriverMessageController {
public EResponse getMessageType() {
return EResponse.ok();
private BusinessMessageService businessMessageService;
@Autowired
public DriverMessageController(BusinessMessageService businessMessageService) {
this.businessMessageService = businessMessageService;
}
public EResponse getMessageList(Integer type) {
return EResponse.ok();
@PostMapping("/type")
public EResponse getMessageType(@RequestHeader @RequestBody(required=false) @Validated(ValidatorUpdate.class) MessageForm messageForm) {
return EResponse.ok(businessMessageService.getMessageType(messageForm));
}
@PostMapping("/list")
public EResponse<PageResultVO> getMessageList(@RequestHeader @RequestBody(required=false) @Validated(ValidatorList.class) MessageForm messageForm) {
return EResponse.ok(businessMessageService.getMessageList(messageForm));
}
@PostMapping("/detail")
public EResponse getMessageDetail(@RequestHeader @RequestBody(required=false) @Validated(ValidatorDetail.class) MessageForm messageForm) {
return EResponse.ok(businessMessageService.getMessageDetail(messageForm));
}
public EResponse getMessageDetail(Long messageId) {
@PostMapping("/deleteById")
public EResponse deleteById(@RequestHeader @RequestBody(required=false) @Validated(ValidatorDelete.class) MessageForm messageForm) {
businessMessageService.deleteMessageById(messageForm);
return EResponse.ok();
}
public EResponse deleteMessage(Long messageId) {
@PostMapping("/deleteByType")
public EResponse deleteByType(@RequestHeader @RequestBody(required=false) @Validated(ValidatorDeleteByType.class) MessageForm messageForm) {
businessMessageService.deleteMessageByType(messageForm);
return EResponse.ok();
}
public EResponse setAllRead() {
@PostMapping("/setAllRead")
public EResponse setAllRead(@RequestHeader @RequestBody(required=false) @Validated(ValidatorUpdate.class) MessageForm messageForm) {
businessMessageService.setAllRead(messageForm);
return EResponse.ok();
}
}
package com.esv.freight.app.module.message.controller;
import com.esv.freight.app.common.response.EResponse;
import com.esv.freight.app.common.validator.groups.*;
import com.esv.freight.app.common.vo.PageResultVO;
import com.esv.freight.app.module.message.form.MessageForm;
import com.esv.freight.app.module.message.service.BusinessMessageService;
import com.esv.freight.app.module.message.validator.groups.ValidatorDeleteByType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/**
* @description: 货主消息Controller
......@@ -21,23 +26,43 @@ import org.springframework.web.bind.annotation.RestController;
@Validated
public class OwnerMessageController {
public EResponse getMessageType() {
return EResponse.ok();
private BusinessMessageService businessMessageService;
@Autowired
public OwnerMessageController(BusinessMessageService businessMessageService) {
this.businessMessageService = businessMessageService;
}
public EResponse getMessageList(Integer type) {
return EResponse.ok();
@PostMapping("/type")
public EResponse getMessageType(@RequestHeader @RequestBody(required=false) @Validated(ValidatorUpdate.class) MessageForm messageForm) {
return EResponse.ok(businessMessageService.getMessageType(messageForm));
}
@PostMapping("/list")
public EResponse<PageResultVO> getMessageList(@RequestHeader @RequestBody(required=false) @Validated(ValidatorList.class) MessageForm messageForm) {
return EResponse.ok(businessMessageService.getMessageList(messageForm));
}
@PostMapping("/detail")
public EResponse getMessageDetail(@RequestHeader @RequestBody(required=false) @Validated(ValidatorDetail.class) MessageForm messageForm) {
return EResponse.ok(businessMessageService.getMessageDetail(messageForm));
}
public EResponse getMessageDetail(Long messageId) {
@PostMapping("/deleteById")
public EResponse deleteById(@RequestHeader @RequestBody(required=false) @Validated(ValidatorDelete.class) MessageForm messageForm) {
businessMessageService.deleteMessageById(messageForm);
return EResponse.ok();
}
public EResponse deleteMessage(Long messageId) {
@PostMapping("/deleteByType")
public EResponse deleteByType(@RequestHeader @RequestBody(required=false) @Validated(ValidatorDeleteByType.class) MessageForm messageForm) {
businessMessageService.deleteMessageByType(messageForm);
return EResponse.ok();
}
public EResponse setAllRead() {
@PostMapping("/setAllRead")
public EResponse setAllRead(@RequestHeader @RequestBody(required=false) @Validated(ValidatorUpdate.class) MessageForm messageForm) {
businessMessageService.setAllRead(messageForm);
return EResponse.ok();
}
}
package com.esv.freight.app.module.message.form;
import com.esv.freight.app.common.validator.groups.*;
import com.esv.freight.app.module.message.validator.groups.ValidatorDeleteByType;
import lombok.Data;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotNull;
/**
* @description: 消息
* @project: freight-app-service
* @name: com.esv.freight.app.module.message.form.MessageForm
* @author: 张志臣
* @email: zhangzhichen@esvtek.com
* @createTime: 2020/06/10 16:40
* @version:1.0
*/
@Data
public class MessageForm {
/**
* 消息ID
**/
@NotNull(message = "参数id不能为空", groups = {ValidatorDetail.class, ValidatorDelete.class, ValidatorDetail.class})
private Long id;
/**
* 消息类型
**/
@NotNull(message = "参数messageType不能为空", groups = {ValidatorList.class, ValidatorDeleteByType.class})
private Integer messageType;
/**
* 账号ID
**/
@NotNull(message = "参数accountId不能为空", groups = {ValidatorList.class, ValidatorUpdate.class, ValidatorDeleteByType.class})
private Long accountId;
/**
* 页码
**/
@NotNull(message = "参数pageNum不能为空", groups = {ValidatorList.class})
private Long pageNum;
/**
* 每页记录条数
**/
@Range(min = 1, max = 1000, message = "pageSize", groups = {ValidatorList.class})
@NotNull(message = "参数pageSize不能为空", groups = {ValidatorList.class})
private Long pageSize;
}
package com.esv.freight.app.module.message.form;
import com.esv.freight.app.common.validator.groups.ValidatorInsert;
import com.esv.freight.app.common.validator.groups.ValidatorUpdate;
import lombok.Data;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
......
package com.esv.freight.app.module.message.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.esv.freight.app.common.vo.PageResultVO;
import com.esv.freight.app.module.message.entity.BusinessMessageEntity;
import com.esv.freight.app.module.message.form.AccountDeviceForm;
import com.esv.freight.app.module.message.form.MessageForm;
import com.esv.freight.app.module.message.form.PushMessageForm;
import com.esv.freight.app.module.message.vo.MessageDetailVO;
import com.esv.freight.app.module.message.vo.MessageTypeVO;
import java.util.List;
/**
* APP业务消息表
......@@ -22,4 +27,58 @@ public interface BusinessMessageService extends IService<BusinessMessageEntity>
* createTime 2020/06/10 11:19
**/
void insertMessage(PushMessageForm pushMessageForm);
/**
* description 获取消息分类
* param [messageForm]
* return
* author Administrator
* createTime 2020/06/10 16:56
**/
List<MessageTypeVO> getMessageType(MessageForm messageForm);
/**
* description 获取指定分类的消息列表
* param [messageForm]
* return
* author Administrator
* createTime 2020/06/10 16:56
**/
PageResultVO getMessageList(MessageForm messageForm);
/**
* description 删除消息
* param [messageForm]
* return
* author Administrator
* createTime 2020/06/10 16:56
**/
void deleteMessageById(MessageForm messageForm);
/**
* description 删除消息分类
* param [messageForm]
* return
* author Administrator
* createTime 2020/06/10 16:56
**/
void deleteMessageByType(MessageForm messageForm);
/**
* description 设置消息已读
* param [messageForm]
* return
* author Administrator
* createTime 2020/06/10 16:56
**/
void setAllRead(MessageForm messageForm);
/**
* description 获取消息详情
* param [messageForm]
* return
* author Administrator
* createTime 2020/06/10 16:56
**/
MessageDetailVO getMessageDetail(MessageForm messageForm);
}
package com.esv.freight.app.module.message.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.esv.freight.app.common.constants.AccountConstants;
import com.esv.freight.app.common.exception.EException;
import com.esv.freight.app.common.util.ReqUtils;
import com.esv.freight.app.common.vo.PageResultVO;
import com.esv.freight.app.feign.NoticeInterface;
import com.esv.freight.app.module.account.entity.AppLoginEntity;
import com.esv.freight.app.module.account.service.AppLoginService;
import com.esv.freight.app.module.message.dao.BusinessMessageDao;
import com.esv.freight.app.module.message.entity.BusinessMessageEntity;
import com.esv.freight.app.module.message.form.MessageForm;
import com.esv.freight.app.module.message.form.PushMessageForm;
import com.esv.freight.app.module.message.service.AccountDeviceInfoService;
import com.esv.freight.app.module.message.service.BusinessMessageService;
import com.esv.freight.app.module.message.vo.MessageDetailVO;
import com.esv.freight.app.module.message.vo.MessageListItemVO;
import com.esv.freight.app.module.message.vo.MessageTypeVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Slf4j
@Service("BusinessMessageService")
public class BusinessMessageServiceImpl extends ServiceImpl<BusinessMessageDao, BusinessMessageEntity> implements BusinessMessageService {
......@@ -105,4 +116,92 @@ public class BusinessMessageServiceImpl extends ServiceImpl<BusinessMessageDao,
reqMessage.put("extras", extras);
return reqMessage;
}
@Override
public List<MessageTypeVO> getMessageType(MessageForm messageForm) {
// 1.分类查询消息,每个type类型消息只取最后生成的一个消息
List<MessageTypeVO> messageTypeVOList = new ArrayList<>();
List<BusinessMessageEntity> lst102 = lambdaQuery()
.eq(BusinessMessageEntity::getAccountId, messageForm.getAccountId())
.eq(BusinessMessageEntity::getMessageType, AccountConstants.MESSAGE_TYPE_WAYBILL_GRAB)
.orderByDesc(BusinessMessageEntity::getCreateTime).list();
if(lst102 != null && lst102.size() > 0) {
BusinessMessageEntity entity102 = lst102.get(0);
MessageTypeVO vo102 = new MessageTypeVO();
BeanUtils.copyProperties(entity102, vo102);
boolean hasNoRead = false;
for(BusinessMessageEntity entity : lst102) {
if(entity.getIsRead() == false) {
hasNoRead = true;
break;
}
}
vo102.setIsRead(!hasNoRead);
messageTypeVOList.add(vo102);
}
return messageTypeVOList;
}
@Override
public PageResultVO getMessageList(MessageForm messageForm) {
// 分页查询
IPage<BusinessMessageEntity> page = new Page<>(messageForm.getPageNum(), messageForm.getPageSize());
IPage<BusinessMessageEntity> entityPage = lambdaQuery()
.eq(BusinessMessageEntity::getAccountId, messageForm.getAccountId())
.eq(BusinessMessageEntity::getMessageType, messageForm.getMessageType())
.orderByDesc(BusinessMessageEntity::getCreateTime)
.page(page);
// 数据转换
List<MessageListItemVO> list = new ArrayList<>();
for(BusinessMessageEntity entity: entityPage.getRecords()){
MessageListItemVO itemVO = new MessageListItemVO();
BeanUtils.copyProperties(entity, itemVO);
list.add(itemVO);
}
PageResultVO pageResultVO = new PageResultVO(page, list);
return pageResultVO;
}
@Override
public void deleteMessageById(MessageForm messageForm) {
QueryWrapper<BusinessMessageEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(BusinessMessageEntity::getId, messageForm.getId());
this.remove(queryWrapper);
}
@Override
public void deleteMessageByType(MessageForm messageForm) {
QueryWrapper<BusinessMessageEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda()
.eq(BusinessMessageEntity::getMessageType, messageForm.getMessageType())
.eq(BusinessMessageEntity::getAccountId, messageForm.getAccountId());
this.remove(queryWrapper);
}
@Override
public void setAllRead(MessageForm messageForm) {
lambdaUpdate()
.eq(BusinessMessageEntity::getAccountId, messageForm.getAccountId())
.set(BusinessMessageEntity::getIsRead, 1)
.update();
}
@Override
public MessageDetailVO getMessageDetail(MessageForm messageForm) {
BusinessMessageEntity entity = lambdaQuery()
.eq(BusinessMessageEntity::getId, messageForm.getId())
.one();
MessageDetailVO messageDetailVO = new MessageDetailVO();
BeanUtils.copyProperties(entity, messageDetailVO);
return messageDetailVO;
}
}
package com.esv.freight.app.module.message.validator.groups;
public interface ValidatorDeleteByType {
}
package com.esv.freight.app.module.message.vo;
import java.util.Date;
public class MessageDetailVO {
/**
* 消息ID
*/
private Long id;
/**
* 消息本文内容
*/
private String messageContent;
/**
* 消息类型 101-货账单对账消息
*/
private Integer messageType;
/**
* 消息标题
*/
private String messageTitle;
/**
* 消息内容(根据message_type由终端自行解析)
*/
private String messageData;
/**
* 创建时间
*/
private Date createTime;
}
package com.esv.freight.app.module.message.vo;
import lombok.Data;
import java.util.Date;
/**
* @description: 消息列表VO
* @project: freight-app-service
* @name: com.esv.freight.app.module.message.vo.MessageListItemVO
* @author: 张志臣
* @email: zhangzhichen@esvtek.com
* @createTime: 2020/06/10 16:50
* @version:1.0
*/
@Data
public class MessageListItemVO {
/**
* 消息ID
*/
private Long id;
/**
* 消息本文内容
*/
private String messageContent;
/**
* 消息类型 101-货账单对账消息
*/
private Integer messageType;
/**
* 消息标题
*/
private String messageTitle;
/**
* 是否已读 0-未读;1-已读
*/
private Boolean isRead;
/**
* 创建时间
*/
private Date createTime;
}
package com.esv.freight.app.module.message.vo;
import lombok.Data;
import java.util.Date;
/**
* @description: 消息分类VO
* @project: freight-app-service
* @name: com.esv.freight.app.module.message.vo.MessageTypeVO
* @author: 张志臣
* @email: zhangzhichen@esvtek.com
* @createTime: 2020/06/10 16:50
* @version:1.0
*/
@Data
public class MessageTypeVO {
/**
* 最后消息本文内容
*/
private String messageContent;
/**
* 消息类型 101-货账单对账消息
*/
private Integer messageType;
/**
* 消息标题
*/
private String messageTitle;
/**
* 分类是否全部已读 0-未读;1-已读
*/
private Boolean isRead;
/**
* 最后创建时间
*/
private Date createTime;
}
......@@ -172,6 +172,7 @@ public class OrderController {
reqJson.put("orderSource", 2);
reqJson.put("remark", orderForm.getRemark());
reqJson.put("signData", orderForm.getSignData());
reqJson.put("bargainAllowed", orderForm.getBargainAllowed());
log.info(reqJson.toJSONString());
JSONObject result = tmsInterface.addOrderOwner(reqJson);
log.info(result.toJSONString());
......@@ -268,6 +269,7 @@ public class OrderController {
orderDetailVO.setRemark(data.getString("remark"));
orderDetailVO.setPlaceOrderTime(data.getLong("placeOrderTime"));
orderDetailVO.setRequiredReceiptTime(data.getLong("requiredReceiptTime"));
orderDetailVO.setBargainAllowed(data.getInteger("bargainAllowed"));
return EResponse.ok(orderDetailVO);
}
......@@ -301,6 +303,7 @@ public class OrderController {
reqJson.put("vehicleTypeSub", orderForm.getVehicleTypeSub());
reqJson.put("vehicleLength", orderForm.getVehicleLength());
reqJson.put("remark", orderForm.getRemark());
reqJson.put("bargainAllowed", orderForm.getBargainAllowed());
log.info(reqJson.toJSONString());
JSONObject result = tmsInterface.editOrderOwner(reqJson);
log.info(result.toJSONString());
......
......@@ -147,6 +147,12 @@ public class OrderForm {
@Length(max = 300, message = "参数备注长度不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class})
private String remark;
/**
* 是否允许议价
*/
@Range(min = 0, max = 1, message = "参数是否允许议价不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class})
private Integer bargainAllowed;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
......
......@@ -209,6 +209,11 @@ public class OrderDetailVO {
*/
private Long requiredReceiptTime;
/**
* 是否允许议价
*/
private Integer bargainAllowed;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
......
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