mp:前端接入发送消息

This commit is contained in:
YunaiV 2023-01-10 23:24:08 +08:00
parent 6325dd288c
commit 541ee81300
6 changed files with 59 additions and 59 deletions

View File

@ -37,10 +37,11 @@ public class MpMessageController {
}
@PostMapping("/send")
// @ApiOperation("获得粉丝消息表分页")
// @PreAuthorize("@ss.hasPermission('mp:message:query')")
public CommonResult<Long> sendMessage(@Valid @RequestBody MpMessageSendReqVO reqVO) {
return success(mpMessageService.sendKefuMessage(reqVO));
@ApiOperation("给粉丝发送消息")
@PreAuthorize("@ss.hasPermission('mp:message:send')")
public CommonResult<MpMessageRespVO> sendMessage(@Valid @RequestBody MpMessageSendReqVO reqVO) {
MpMessageDO message = mpMessageService.sendKefuMessage(reqVO);
return success(MpMessageConvert.INSTANCE.convert(message));
}
}

View File

@ -52,8 +52,8 @@ public interface MpMessageService {
* 注意该方法会真实发送消息
*
* @param sendReqVO 消息内容
* @return 消息编号
* @return 消息
*/
Long sendKefuMessage(MpMessageSendReqVO sendReqVO);
MpMessageDO sendKefuMessage(MpMessageSendReqVO sendReqVO);
}

View File

@ -104,7 +104,7 @@ public class MpMessageServiceImpl implements MpMessageService {
}
@Override
public Long sendKefuMessage(MpMessageSendReqVO sendReqVO) {
public MpMessageDO sendKefuMessage(MpMessageSendReqVO sendReqVO) {
// 校验消息格式
MpUtils.validateMessage(validator, sendReqVO.getType(), sendReqVO);
@ -116,18 +116,17 @@ public class MpMessageServiceImpl implements MpMessageService {
WxMpKefuMessage wxMessage = MpMessageConvert.INSTANCE.convert(sendReqVO, user);
WxMpService mpService = mpServiceFactory.getRequiredMpService(user.getAppId());
try {
boolean result = mpService.getKefuService().sendKefuMessage(wxMessage);
System.out.println(result);
mpService.getKefuService().sendKefuMessageWithResponse(wxMessage);
} catch (WxErrorException e) {
throw new RuntimeException(e);
}
// 记录消息
MpMessageDO message = MpMessageConvert.INSTANCE.convert(wxMessage, account, user);
message.setSendFrom(MpMessageSendFromEnum.USER_TO_MP.getFrom());
message.setSendFrom(MpMessageSendFromEnum.MP_TO_USER.getFrom());
downloadMessageMedia(mpService, message);
mpMessageMapper.insert(message);
return message.getId();
return message;
}
/**

View File

@ -1,23 +1,6 @@
import request from '@/utils/request'
// 创建粉丝消息表
export function createMessage(data) {
return request({
url: '/mp/message/create',
method: 'post',
data: data
})
}
// 获得粉丝消息表
export function getMessage(id) {
return request({
url: '/mp/message/get?id=' + id,
method: 'get'
})
}
// 获得粉丝消息表 分页
// 获得粉丝消息表分页
export function getMessagePage(query) {
return request({
url: '/mp/message/page',
@ -25,3 +8,12 @@ export function getMessagePage(query) {
params: query
})
}
// 给粉丝发送消息
export function sendMessage(data) {
return request({
url: '/mp/message/send',
method: 'post',
data: data
})
}

View File

@ -88,7 +88,7 @@
</template>
<script>
import { getMessagePage } from '@/api/mp/message'
import {getMessagePage, sendMessage} from '@/api/mp/message'
import WxReplySelect from '@/views/mp/components/wx-reply/main.vue'
import WxVideoPlayer from '@/views/mp/components/wx-video-play/main.vue';
import WxVoicePlayer from '@/views/mp/components/wx-voice-play/main.vue';
@ -107,16 +107,14 @@
WxMusic
},
props: {
wxUserId: {
type: String
userId: {
type: String,
required: true
}
},
data() {
return {
nowStr: new Date().getTime(), // :id="'msg-div' + nowStr"
objData:{
repType: 'text'
},
sendLoading: false, //
tableLoading: false, //
loadMore: true, //
@ -133,6 +131,9 @@
nickname: '公众号',
avatar: require("@/assets/images/wechat.png"),
},
objData:{ //
repType: 'text'
},
}
},
created() {
@ -140,30 +141,37 @@
},
methods:{
sendMsg(){
if (this.objData) {
if(this.objData.repType === 'news'){
this.objData.content.articles = [this.objData.content.articles[0]]
this.$message({
showClose: true,
message: '图文消息条数限制在1条以内已默认发送第一条',
type: 'success'
})
}
this.sendLoading = true
addObj(Object.assign({
wxUserId: this.wxUserId
},this.objData)).then(data => {
this.sendLoading = false
data = data.data
this.tableData = [...this.tableData , ...[data] ]
this.scrollToBottom()
this.objData = {
repType: 'text'
}
}).catch(() => {
this.sendLoading = false
if (!this.objData) {
return;
}
if (this.objData.repType === 'news') {
this.objData.content.articles = [this.objData.content.articles[0]]
this.$message({
showClose: true,
message: '图文消息条数限制在1条以内已默认发送第一条',
type: 'success'
})
}
this.sendLoading = true
sendMessage(Object.assign({
userId: this.userId
}, {
...this.objData,
type: this.objData.repType,
content: this.objData.repContent,
// TODO
})).then(response => {
this.sendLoading = false
//
this.tableData = [...this.tableData , ...[response.data] ]
this.scrollToBottom()
// objData
this.objData = {
repType: 'text'
}
}).catch(() => {
this.sendLoading = false
})
},
loadingMore() {
this.page.pageNo++
@ -174,7 +182,7 @@
getMessagePage(Object.assign({
pageNo: page.pageNo,
pageSize: page.pageSize,
wxUserId: this.wxUserId
userId: this.userId
}, params)).then(response => {
//
const msgDiv = document.getElementById('msg-div' + this.nowStr);

View File

@ -111,7 +111,7 @@
@pagination="getList"/>
<el-dialog title="用户消息" :visible.sync="open" width="40%">
<wx-msg wxUserId="1" v-if="true" />
<wx-msg user-id="3" v-if="true" />
</el-dialog>
</div>