初始化

This commit is contained in:
2026-01-15 17:35:00 +08:00
commit e8e6c3bf22
187 changed files with 10721 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
package org.chenyon.message;
import org.rcy.framework.api.entity.BaseEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
@Entity
@Table(name = "MESSAGE")
public class Message extends BaseEntity {
private String title;
private MessageType messageType;
private String messageContent;
private String messageTime;
private String messageReceiver;
private String bizId;
private Boolean hasRead = false;
public MessageType getMessageType() {
return messageType;
}
public void setMessageType(MessageType messageType) {
this.messageType = messageType;
}
public String getMessageContent() {
return messageContent;
}
public void setMessageContent(String messageContent) {
this.messageContent = messageContent;
}
public String getMessageTime() {
return messageTime;
}
public void setMessageTime(String messageTime) {
this.messageTime = messageTime;
}
public String getMessageReceiver() {
return messageReceiver;
}
public void setMessageReceiver(String messageReceiver) {
this.messageReceiver = messageReceiver;
}
public String getBizId() {
return bizId;
}
public void setBizId(String bizId) {
this.bizId = bizId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Boolean getHasRead() {
return hasRead;
}
public void setHasRead(Boolean hasRead) {
this.hasRead = hasRead;
}
}

View File

@@ -0,0 +1,80 @@
package org.chenyon.message;
import org.chenyon.user.LoginCheck;
import org.chenyon.user.UserContext;
import org.rcy.framework.api.entity.PageResult;
import org.rcy.framework.api.entity.ResultMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/message")
public class MessageController {
private static final Logger log = LoggerFactory.getLogger(MessageController.class);
@Autowired
private MessageService messageService;
@PostMapping("/queryPage")
@LoginCheck
public ResultMessage queryPage(@RequestBody MessageQueryCondition condition){
UserContext userContext = UserContext.get();
if(userContext == null || userContext.getCusNo() == null) {
return ResultMessage.success(new PageResult());
}
try {
condition.setMessageReceiver(userContext.getCusNo());
return ResultMessage.success(messageService.queryPage(condition));
}catch (Exception e) {
log.error(e.getMessage(), e);
}
return ResultMessage.success();
}
@GetMapping("/detail")
@LoginCheck
public ResultMessage detail(@RequestParam("id") Long id){
try {
return ResultMessage.success(messageService.detail(id));
}catch (Exception e) {
log.error(e.getMessage(), e);
}
return ResultMessage.success();
}
@GetMapping("/read")
@LoginCheck
public ResultMessage read(@RequestParam("id") Long id){
try {
messageService.read(id);
return ResultMessage.success();
}catch (Exception e) {
log.error(e.getMessage(), e);
}
return ResultMessage.success();
}
@GetMapping("/countUnread")
@LoginCheck
public ResultMessage countUnread(){
UserContext userContext = UserContext.get();
if(userContext == null || userContext.getCusNo() == null) {
return ResultMessage.success(0);
}
try {
return ResultMessage.success(messageService.countUnread(userContext.getCusNo()));
}catch (Exception e) {
log.error(e.getMessage(), e);
}
return ResultMessage.success(0);
}
@PostMapping("/sendMessage")
public ResultMessage sendMessage(@RequestBody MessageVo vo){
return ResultMessage.success();
}
}

View File

@@ -0,0 +1,10 @@
package org.chenyon.message;
import org.rcy.framework.data.dao.BaseDao;
import java.util.List;
public interface MessageDao extends BaseDao<Message> {
List<Message> pageQuery(MessageQueryCondition condition);
Long countCondition(MessageQueryCondition condition);
}

View File

@@ -0,0 +1,31 @@
<?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="org.chenyon.message.MessageDao">
<select id="queryPage" resultType="Message" parameterType="MessageQueryCondition">
select * from message
<include refid="whereSQL"/>
<if test="limit != null and offset != null">
limit #{offset}, #{limit}
</if>
order by `createTime` desc
</select>
<select id="countCondition" resultType="Message" parameterType="MessageQueryCondition">
select count(*) from message
<include refid="whereSQL"/>
</select>
<sql id="whereSQL">
<where>
1 = 1
<if test="bizId != null">
AND bizId = #{bizId}
</if>
<if test="messageReceiver != null">
AND messageReceiver = #{messageReceiver}
</if>
</where>
</sql>
</mapper>

View File

@@ -0,0 +1,16 @@
package org.chenyon.message;
import org.rcy.framework.api.entity.PageQueryRequest;
public class MessageQueryCondition extends PageQueryRequest {
private String messageReceiver;
public String getMessageReceiver() {
return messageReceiver;
}
public void setMessageReceiver(String messageReceiver) {
this.messageReceiver = messageReceiver;
}
}

View File

@@ -0,0 +1,73 @@
package org.chenyon.message;
import org.chenyon.wx.AesException;
import org.chenyon.wx.WXBizMsgCrypt;
import org.rcy.framework.api.entity.PageResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.xml.parsers.ParserConfigurationException;
import java.util.List;
@Service
@Transactional
public class MessageService {
@Autowired
private MessageDao messageDao;
public MessageVo detail(Long id) {
Message message = messageDao.get(id);
MessageVo messageVo = new MessageVo();
if(message != null) {
messageVo.setMessageContent(message.getMessageContent());
messageVo.setTitle(message.getTitle());
messageVo.setMessageTime(message.getMessageTime());
}
return messageVo;
}
public void read(Long id) {
Message message = messageDao.get(id);
message.setHasRead(true);
messageDao.updateByPrimaryKeySelective(message);
}
public Integer countUnread(String cusNo){
MessageQueryCondition messageQueryCondition = new MessageQueryCondition();
messageQueryCondition.setMessageReceiver(cusNo);
Long count = messageDao.countCondition(messageQueryCondition);
return count.intValue();
}
public PageResult queryPage(MessageQueryCondition condition) {
List<Message> messages = messageDao.pageQuery(condition);
Long count = messageDao.countCondition(condition);
PageResult<Message> pageResult = new PageResult<>();
pageResult.setResult(messages);
pageResult.setRecordTotal(count);
return pageResult;
}
public void send(MessageVo messageVo) throws AesException, ParserConfigurationException {
// 消息入库
//
String urlSend = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=";
// 需要加密的明文
String encodingAesKey = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFG";
String token = "pamtest";
String timestamp = "1409304348";
String nonce = "xxxxxx";
String appId = "wxb11529c136998cb6";
String replyMsg = " 中文<xml><ToUserName><![CDATA[oia2TjjewbmiOUlr6X-1crbLOvLw]]></ToUserName><FromUserName><![CDATA[gh_7f083739789a]]></FromUserName><CreateTime>1407743423</CreateTime><MsgType><![CDATA[video]]></MsgType><Video><MediaId><![CDATA[eYJ1MbwPRJtOvIEabaxHs7TX2D-HV71s79GUxqdUkjm6Gs2Ed1KF3ulAOA9H1xG0]]></MediaId><Title><![CDATA[testCallBackReplyVideo]]></Title><Description><![CDATA[testCallBackReplyVideo]]></Description></Video></xml>";
WXBizMsgCrypt pc = new WXBizMsgCrypt(token, encodingAesKey, appId);
String mingwen = pc.encryptMsg(replyMsg, timestamp, nonce);
System.out.println("加密后: " + mingwen);
}
}

View File

@@ -0,0 +1,11 @@
package org.chenyon.message;
public enum MessageType {
SIGN("合同签署"),
BILL("账单催缴"),
;
private String desc;
MessageType(String desc) {
this.desc = desc;
}
}

View File

@@ -0,0 +1,76 @@
package org.chenyon.message;
public class MessageVo {
private String id;
private String title;
private String messageType;
private String messageContent;
private String messageTime;
private String messageReceiver;
private String bizId;
private Boolean hasRead;
public String getMessageType() {
return messageType;
}
public void setMessageType(String messageType) {
this.messageType = messageType;
}
public String getMessageContent() {
return messageContent;
}
public void setMessageContent(String messageContent) {
this.messageContent = messageContent;
}
public String getMessageTime() {
return messageTime;
}
public void setMessageTime(String messageTime) {
this.messageTime = messageTime;
}
public String getMessageReceiver() {
return messageReceiver;
}
public void setMessageReceiver(String messageReceiver) {
this.messageReceiver = messageReceiver;
}
public String getBizId() {
return bizId;
}
public void setBizId(String bizId) {
this.bizId = bizId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Boolean getHasRead() {
return hasRead;
}
public void setHasRead(Boolean hasRead) {
this.hasRead = hasRead;
}
}