Commit b2acbc14 by sdif

Merge remote-tracking branch 'origin/dev' into dev

parents 9f49edd1 af97f382
package com.pz.applet;
import cn.dev33.satoken.annotation.SaIgnore;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pz.common.annotation.Log;
import com.pz.common.annotation.RepeatSubmit;
......@@ -8,6 +11,7 @@ import com.pz.common.core.controller.BaseController;
import com.pz.common.core.domain.BaseEntity;
import com.pz.common.core.domain.PageQuery;
import com.pz.common.core.domain.R;
import com.pz.common.core.domain.entity.SysUser;
import com.pz.common.core.page.TableDataInfo;
import com.pz.common.core.validate.AddGroup;
import com.pz.common.enums.BusinessType;
......@@ -15,6 +19,7 @@ import com.pz.system.domain.Message;
import com.pz.system.domain.SessionList;
import com.pz.system.domain.bo.SessionListBo;
import com.pz.system.domain.vo.AvatarUserNameVo;
import com.pz.system.domain.vo.MessageVo;
import com.pz.system.domain.vo.SessionListVo;
import com.pz.system.mapper.MessageMapper;
import com.pz.system.mapper.SessionListMapper;
......@@ -26,6 +31,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
......@@ -52,7 +58,54 @@ public class AppletSessionListController extends BaseController {
*/
@GetMapping("/list")
public TableDataInfo<SessionListVo> list(SessionListBo bo, PageQuery pageQuery) {
return sessionListMapper.selectVoPage(pageQuery.build(), Wrappers.<SessionList>lambdaQuery().eq(SessionList::getUserId, getUserId()).or().eq(SessionList::getToUserId, getUserId()));
IPage<SessionListVo> sessionListVoIPage = sessionListMapper.selectVoPage(pageQuery.build(), Wrappers.<SessionList>lambdaQuery().eq(SessionList::getUserId, getUserId()).or().eq(SessionList::getToUserId, getUserId()));
List<SessionListVo> records = sessionListVoIPage.getRecords();
if (CollectionUtils.isNotEmpty(records)) {
Long userId = getUserId();
List<SessionListVo> recordsToRemove = new ArrayList<>();
records.forEach(sessionListVo -> {
Long toUserId = sessionListVo.getToUserId();
Long fromUserId = sessionListVo.getUserId();
if (fromUserId == userId || toUserId == userId) {
Long targetUserId = (fromUserId == userId) ? toUserId : fromUserId;
sessionListVo.setToUserId(targetUserId);
Optional<SysUser> optionalSysUser = Optional.ofNullable(sysUserMapper.selectUserById(targetUserId));
optionalSysUser.ifPresent(sysUser -> {
sessionListVo.setToUserName(sysUser.getNickName());
sessionListVo.setToAvatar(sysUser.getAvatar());
});
//获取未读消息数以及最后消息时间
List<MessageVo> messageVos = messageMapper.selectVoList(Wrappers.<Message>lambdaQuery()
.eq(Message::getSender, targetUserId)
.eq(Message::getReceiver, getUserId())
.eq(Message::getIsRead, 0)
.orderByDesc(Message::getCreateTime));
if (CollectionUtils.isNotEmpty(messageVos)) {
//未读消息数
sessionListVo.setUnReadCount(messageVos.size());
//最后发送消息时间
sessionListVo.setLastTime(messageVos.get(0).getCreateTime());
//消息内容
sessionListVo.setMessage(messageVos.get(0).getContent());
} else {
List<MessageVo> messageVoList = messageMapper.selectVoList(Wrappers.<Message>lambdaQuery()
.eq(Message::getSender, targetUserId)
.eq(Message::getReceiver, getUserId())
.eq(Message::getIsRead, 1)
.orderByDesc(Message::getCreateTime));
if (CollectionUtils.isNotEmpty(messageVoList)) {
sessionListVo.setLastTime(messageVoList.get(0).getCreateTime());
sessionListVo.setUnReadCount(0);
} else {
recordsToRemove.add(sessionListVo);
}
}
}
});
// 执行删除操作
records.removeAll(recordsToRemove);
}
return TableDataInfo.build(sessionListVoIPage);
}
/**
......@@ -114,18 +167,6 @@ public class AppletSessionListController extends BaseController {
// 插入会话列表记录
sessionListMapper.insert(sessionList);
Integer id = sessionListMapper.selectIdByUser(bo.getToUserId(), bo.getUserId());
// 判断对方和我建立会话没有,如果没有则建立
if (id == null) {
// 新建会话列表对象
SessionList newSessionList = new SessionList();
newSessionList.setUserId(bo.getToUserId());
newSessionList.setToUserId(bo.getUserId());
newSessionList.setUnReadCount(0L);
// 插入新的会话列表记录
sessionListMapper.insert(newSessionList);
}
return R.ok(sessionList.getId());
}
......
......@@ -104,9 +104,10 @@ public class WebSocketOneToOneController {
int msgType = json.getIntValue("messageType");
String lastMessageTime = json.getString("lastMessageTime"); // 使用类型推断,如果不存在键"lastMessageTime",则为null
Long receiveId = json.getLong("receiveId"); // 发送对象的用户标识(接收者)
String createTime = json.getString("createTime");
// 发送消息
send(msg, sendId, receiveId, roomId, msgType, requestId, lastMessageTime, sessionId);
send(msg, sendId, receiveId, roomId, msgType, requestId, lastMessageTime, sessionId, createTime);
}
/**
......@@ -159,7 +160,7 @@ public class WebSocketOneToOneController {
* @param requestId 消息请求ID
* @param lastMessageTime 最后一次的消息时间
*/
public void send(String msg, Long sendId, Long receiveId, String roomId, int msgType, String requestId, String lastMessageTime, String sessionId) {
public void send(String msg, Long sendId, Long receiveId, String roomId, int msgType, String requestId, String lastMessageTime, String sessionId, String createTime) {
Message message = new Message();
message.setContent(msg);
Date now = new Date();
......@@ -169,15 +170,7 @@ public class WebSocketOneToOneController {
message.setIsRead("0");
message.setRequestId(requestId);
message.setType(0);
if (StringUtils.isNotBlank(lastMessageTime)) {
Date lastTime = DateUtils.stringToDate(lastMessageTime, "yyyy-MM-dd HH:mm");
long minute = (now.getTime() - lastTime.getTime()) / 1000 / 60;
log.info("此二人聊天,距离上一次聊天时间相差分钟数:" + minute);
if (minute > 5) {
message.setType(1);
}
}
message.setCreateTime(new Date());
if (messageMapper == null) {
this.messageMapper = (MessageMapper) SpringContextUtil.getBean("messageMapper");
......@@ -197,10 +190,13 @@ public class WebSocketOneToOneController {
//发送消息
sendMessage(sessionList, message);
} else {
Integer toId = Integer.valueOf((String) list.get(0));
String o = (String) list.get(0);
if (StringUtils.isNotBlank(o) && !o.equals("null")) {
Integer toId = Integer.valueOf(o);
if (Integer.valueOf(sessionId).equals(toId)) {
//彼此都在会话中,直接发送消息
sendMessage(sessionList, message);
}
} else {
if (sessionId == null) {
//创建会话
......
......@@ -22,85 +22,71 @@ public class CompanyBo extends BaseEntity {
/**
* ID
*/
@NotNull(message = "ID不能为空", groups = { EditGroup.class })
private Integer id;
/**
* 商户名称
*/
@NotBlank(message = "商户名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 城市
*/
@NotNull(message = "城市不能为空", groups = { AddGroup.class, EditGroup.class })
private Long cityId;
/**
* 商户电话
*/
@NotBlank(message = "商户电话不能为空", groups = { AddGroup.class, EditGroup.class })
private String tel;
/**
* 商户手机
*/
@NotBlank(message = "商户手机不能为空", groups = { AddGroup.class, EditGroup.class })
private String phone;
/**
* 商户地址
*/
@NotBlank(message = "商户地址不能为空", groups = { AddGroup.class, EditGroup.class })
private String address;
/**
* 状态
*/
@NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer status;
/**
* 营业执照
*/
@NotBlank(message = "营业执照不能为空", groups = { AddGroup.class, EditGroup.class })
private String businessLicense;
/**
* 是否缴纳保证金
*/
@NotNull(message = "是否缴纳保证金不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer isCashDeposit;
/**
* 保证金金额
*/
@NotBlank(message = "保证金金额不能为空", groups = { AddGroup.class, EditGroup.class })
private String cashDeposit;
/**
* 创建人
*/
@NotNull(message = "创建人不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer uid;
/**
* 总收益
*/
@NotBlank(message = "总收益不能为空", groups = { AddGroup.class, EditGroup.class })
private String totalRevenue;
/**
* 当前余额
*/
@NotBlank(message = "当前余额不能为空", groups = { AddGroup.class, EditGroup.class })
private String balance;
/**
* 冻结余额
*/
@NotBlank(message = "冻结余额不能为空", groups = { AddGroup.class, EditGroup.class })
private String freezeBalance;
......
......@@ -39,9 +39,4 @@ public class SonOrderVo {
*/
private Date visitTime;
/**
* 接单员id
*/
private Long euserId;
}
......@@ -393,7 +393,8 @@ public class EmployeesServiceImpl implements IEmployeesService {
QueryWrapper<Employees> query = Wrappers.query();
query.eq(bo.getEmId() != null, "total_order.em_id", bo.getEmId())
.eq(bo.getServiceStatus() != null, "total_order.suborder_status", bo.getServiceStatus())
.between("total_order.business_id", 1, 5); // 陪诊员只能查询1-5的订单
.between("total_order.business_id", 1, 5) // 陪诊员只能查询1-5的订单
.orderByDesc("total_order.id");
IPage<OrderInfoVO> page = baseMapper.selectOrder(pageQuery.build(), query);
// 根据不同子订单装载就诊人员信息和子订单状态
page.getRecords().forEach(suborder -> {
......
......@@ -6,6 +6,8 @@ import com.pz.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* @author lisw
* @program message
......@@ -68,4 +70,6 @@ public class Message extends BaseEntity {
* 备注
*/
private String remark;
private Date createTime;
}
......@@ -71,5 +71,4 @@ public class DbwzOrderItemVo extends OrderCommonVo {
*/
private String postTreatmentCondition;
private Integer userId;
}
......@@ -56,11 +56,16 @@ public class OrderCommonVo {
private Float commission;
/**
* 业务项目
* 服务名称名称
*/
private String project;
/**
* 业务名称
*/
private String businessName;
/**
* 其他需求
*/
private String description;
......@@ -70,4 +75,14 @@ public class OrderCommonVo {
*/
private String remark;
/**
* 接单人员ID
*/
private Long euserId;
/**
* 用户ID
*/
private Integer userId;
}
......@@ -6,6 +6,8 @@ import com.pz.common.annotation.ExcelDictFormat;
import com.pz.common.convert.ExcelDictConvert;
import lombok.Data;
import java.util.Date;
/**
* 会话列视图对象 session_list
......@@ -47,7 +49,20 @@ public class SessionListVo {
* 未读消息数
*/
@ExcelProperty(value = "未读消息数")
private Long unReadCount;
private Integer unReadCount;
/**
* 对方头像
*/
private String toAvatar;
/**
* 对方名称
*/
private String toUserName;
private Date lastTime;
private String message;
}
......@@ -43,8 +43,4 @@ public class YypzOrderItemVo extends OrderCommonVo {
*/
private Date visitTime;
/**
* 用户id
*/
private Integer uid;
}
......@@ -45,11 +45,12 @@ public class MessageServiceImpl implements IMessageService {
@Override
public List<MessageVo> queryPageList(MessageBo bo) {
String strTime = bo.getStrTime() + " 00:00:00";
bo.setStrTime(bo.getStrTime() + " 23:59:59");
List<MessageVo> result = new ArrayList<>();
result = baseMapper.selectVoList(new LambdaQueryWrapper<Message>().eq(Message::getSender, bo.getSender())
.eq(Message::getReceiver, bo.getReceiver()).or().eq(Message::getSender, bo.getReceiver()).eq(Message::getReceiver, bo.getSender())
.ge(BaseEntity::getCreateTime, bo.getStrTime()).le(BaseEntity::getCreateTime, bo.getStrTime()));
.eq(Message::getReceiver, bo.getReceiver()).ge(BaseEntity::getCreateTime, strTime).le(BaseEntity::getCreateTime, bo.getStrTime()).or().eq(Message::getSender, bo.getReceiver()).eq(Message::getReceiver, bo.getSender())
.ge(BaseEntity::getCreateTime, strTime).le(BaseEntity::getCreateTime, bo.getStrTime()));
List<Message> messageList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(result)) {
......
......@@ -56,11 +56,8 @@
dbgh_order.status as orderStatus,
sys_user.avatar,
hospital.name as hospital,
dbgh_order.visit_time,
e.uid as euserId
dbgh_order.visit_time
from dbgh_order
left join total_order as t on t.id = dbgh_order.order_id
left join employees as e on e.id = t.em_id
left join user_vsitor as vsitor on vsitor.id = dbgh_order.visitor
left join sys_user on sys_user.user_id = vsitor.uid
left join hospital on hospital.id = dbgh_order.hid
......@@ -73,7 +70,8 @@
total_order.business_id,
total_order.status as orderStatus,
dbgh_order.status as serviceStatus,
business.name as project,
services.name as project,
business.name as businessName,
CONVERT((1 - services.fenmo / 100), decimal(10, 2)) *
CONVERT(services.price, decimal(10, 2)) as commission,
user_vsitor.name as userName,
......@@ -84,9 +82,12 @@
dbgh_order.remark,
total_order.evaluation_content,
total_order.is_satisfaction as evaluation_flag,
dbgh_order.voucher
dbgh_order.voucher,
total_order.uid as userId,
employees.uid as euserId
from total_order
left join business on total_order.business_id = business.id
left join employees on employees.id = total_order.em_id
left join dbgh_order on dbgh_order.order_id = total_order.id
left join services on total_order.service_id = services.id
left join user_vsitor on user_vsitor.id = dbgh_order.visitor
......
......@@ -58,11 +58,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectSonOrderInfoByTotalId" resultType="com.pz.merchant.domain.vo.SonOrderVo">
select dbmy_order.status as orderStatus,
sys_user.nick_name as userName,
sys_user.avatar,
employees.uid as euserId
sys_user.avatar
from dbmy_order
left join total_order on total_order.id = dbmy_order.order_id
left join employees on employees.id = total_order.em_id
left join sys_user on sys_user.user_id = total_order.uid
where dbmy_order.order_id = #{id}
</select>
......@@ -73,7 +71,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
total_order.business_id,
total_order.status as orderStatus,
dbmy_order.status as serviceStatus,
business.name as project,
services.name as project,
business.name as businessName,
CONVERT((1 - services.fenmo / 100), decimal(10, 2)) *
CONVERT(services.price, decimal(10, 2)) as commission,
dbmy_order.yp_name,
......@@ -90,9 +89,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
dbmy_order.remark,
dbmy_order.voucher,
total_order.evaluation_content,
total_order.is_satisfaction as evaluation_flag
total_order.is_satisfaction as evaluation_flag,
total_order.uid as userId,
employees.uid as euserId
from total_order
left join business on total_order.business_id = business.id
left join employees on total_order.em_id = employees.id
left join dbmy_order on dbmy_order.order_id = total_order.id
left join services on total_order.service_id = services.id
where total_order.id = #{id}
......
......@@ -59,11 +59,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select vsitor.name as userName,
dbwz_order.status as orderStatus,
sys_user.avatar,
dbwz_order.visit_time,
employees.uid as euserId
dbwz_order.visit_time
from dbwz_order
left join total_order on total_order.id = dbwz_order.order_id
left join employees on employees.id = total_order.em_id
left join user_vsitor as vsitor on vsitor.id = dbwz_order.visitor
left join sys_user on sys_user.user_id = vsitor.uid
where dbwz_order.order_id = #{id}
......@@ -75,7 +72,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
total_order.business_id,
total_order.status as orderStatus,
dbwz_order.status as serviceStatus,
business.name as project,
services.name as project,
business.name as businessName,
CONVERT((1 - services.fenmo / 100), decimal(10, 2)) *
CONVERT(services.price, decimal(10, 2)) as commission,
user_vsitor.name as userName,
......@@ -95,11 +93,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
dbwz_order.voucher,
total_order.uid as userId,
dbwz_order.voucher,
dbwz_order.indications as doctor
dbwz_order.indications as doctor,
employees.uid as euserId
from total_order
left join business on total_order.business_id = business.id
left join dbwz_order on dbwz_order.order_id = total_order.id
left join services on total_order.service_id = services.id
left join employees on employees.id = total_order.em_id
left join user_vsitor on user_vsitor.id = dbwz_order.visitor
left join department on department.id = dbwz_order.did
where total_order.id = #{id}
......
......@@ -18,6 +18,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
UPDATE session_list SET un_read_count = 0 WHERE user_id = #{fromUserId} AND to_user_id = #{toUserId}
</update>
<select id="selectIdByUser" resultType="java.lang.Integer">
SELECT id FROM session_list WHERE user_id = #{fromId} AND to_user_id = #{toId}
SELECT id FROM session_list WHERE user_id = #{fromId} AND to_user_id = #{toId} or user_id = #{toId} AND to_user_id = #{fromId}
</select>
</mapper>
......@@ -58,11 +58,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
yypz_order.status as orderStatus,
sys_user.avatar,
hospital.name as hospital,
yypz_order.visit_time,
employees.uid as euserId
yypz_order.visit_time
from yypz_order
left join total_order on total_order.id = yypz_order.order_id
left join employees on employees.id = total_order.em_id
left join user_vsitor as vsitor on vsitor.id = yypz_order.visitor
left join sys_user on sys_user.user_id = vsitor.uid
left join hospital on hospital.id = yypz_order.hid
......@@ -77,7 +74,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
yypz_order.status as serviceStatus,
yypz_order.phone,
yypz_order.visit_time,
business.name as project,
services.name as project,
business.name as businessName,
total_order.evaluation_content,
total_order.is_satisfaction as evaluation_flag,
total_order.remark as description,
......@@ -88,11 +86,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
hospital.name as hospital,
department.title as department,
yypz_order.remark,
total_order.uid as uid
total_order.uid as userId,
employees.uid as euserId
from total_order
left join business on business.id = total_order.business_id
left join yypz_order on yypz_order.order_id = total_order.id
left join services on total_order.service_id = services.id
left join employees on employees.id = total_order.em_id
left join user_vsitor on user_vsitor.id = yypz_order.visitor
left join hospital on yypz_order.hid = hospital.id
left join department on department.id = yypz_order.did
......
......@@ -56,12 +56,9 @@
<select id="selectSonOrderInfoByTotalId" resultType="com.pz.merchant.domain.vo.SonOrderVo">
select user.nick_name as userName,
zqgh_order.status as orderStatus,
user.avatar,
employees.uid as euserId
user.avatar
from zqgh_order
left join total_order on total_order.id = zqgh_order.order_id
left join employees on employees.id = total_order.em_id
left join total_order on total_order.id = zqgh_order.order_id
left join sys_user as user on user.user_id = total_order.uid
where zqgh_order.order_id = #{id}
</select>
......@@ -75,6 +72,7 @@
hospital.name as hospital,
department.title as department,
zqgh_order.time_of_appointment as visitTime,
total_order.uid as userId,
doctor.name as doctor
from total_order
left join zqgh_order on zqgh_order.id = total_order.id
......
......@@ -62,11 +62,8 @@
zyph_order.status as orderStatus,
sys_user.avatar,
hospital.name as hospital,
zyph_order.start_day as visitTime,
employees.uid as euserId
zyph_order.start_day as visitTime
from zyph_order
left join total_order on total_order.id = zyph_order.order_id
left join employees on employees.id = total_order.em_id
left join user_vsitor as vsitor on vsitor.id = zyph_order.visitor
left join sys_user on sys_user.user_id = vsitor.uid
left join hospital on hospital.id = zyph_order.hid
......@@ -79,7 +76,8 @@
total_order.business_id,
total_order.status as orderStatus,
zyph_order.status as serviceStatus,
business.name as project,
services.name as project,
business.name as businessName,
CONVERT((1 - services.fenmo / 100), decimal(10, 2)) *
CONVERT(services.price, decimal(10, 2)) as commission,
user_vsitor.name as userName,
......@@ -91,10 +89,13 @@
concat(zyph_order.start_time, ' ~ ', zyph_order.end_time) as visitTime,
zyph_order.voucher,
total_order.evaluation_content,
total_order.is_satisfaction as evaluation_flag
total_order.is_satisfaction as evaluation_flag,
total_order.uid as userId,
employees.uid as euserId
from total_order
left join business on total_order.business_id = business.id
left join zyph_order on zyph_order.order_id = total_order.id
left join employees on employees.id = total_order.em_id
left join services on total_order.service_id = services.id
left join user_vsitor on user_vsitor.id = zyph_order.visitor
left join hospital on zyph_order.hid = hospital.id
......
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