前言
这是一个前后端分离的项目,后端使用Java进行开发,而前端通过微信小程序实现。
功能结构
可从上图得知,部分功能已去除:
- 消息
- 消息推送
- 紧急情况推送
- 用户
- 个人中心
模型设计
用户信息(UserInfo)
- id Long 主键
- oid String OpenID
- uid String UnionID
- name String 昵称
- phone_num String 手机号
- avatar String 头像地址
- authState String 登录状态
Silence
静默登录(目前程序的访问是需要存在登录态的)Authorized
已授权
- createTime Timestamp 记录创建时间
- updateTime Timestamp 记录更新时间
行政区划信息(DistrictInfo)
使用全国行政区划信息填充,含空间数据,数据粒度到区县。目前仅支持国内数据。
- id Long 主键
- name String 行政区名称
- grade Integer 行政区级别
- 1:省级行政区
- 2:地级行政区
- 3:县级行政区
- 4:乡镇级行政区
- code String 行政区代码
- centerPoint Point 行政区中心点(空间数据)
- bounds Geometry 行政区边界(空间数据)
关注城市(FollowCity)
- id Long 主键
- userId Long 用户ID
- districtId Long 行政区划ID
- districtName String 行政区划名称
- districtCode String 行政区划编码
- orderNum Integer 序号,自然数,从1开始
- createTime Timestamp 记录创建时间
天气信息
由于天气数据均来自第三方,目前数据格式于和风天气对齐。
通过对和风天气响应数据结构研究,抽象出基础响应,实际响应均继承该基础响应类,并实现getDataColumn方法,以标记对应数据列。
目前使用代理方式进行第三方接口调用,且将结构对齐交由前端进行,所以此处并未进行强格式定义。
基础响应信息
package org.fuyi.weather.infra.common.entity;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.io.Serializable;
/**
* 天气代理实体基础类
*
* @author: <a href="mailto:thread.zhou@gmail.com">Fuyi</a>
* @time: 2022/2/1 下午3:22
* @since: 1.0
*/
public abstract class AbstractWeatherProxyWrappedEntity implements Serializable {
private static final long serialVersionUID = 5559333755209092109L;
/**
* API状态码,具体含义请参考状态码
* 参考 <a>https://dev.qweather.com/docs/resource/status-code/</a>
*/
private String code;
/**
* 当前API的最近更新时间
* 参考 <a>https://dev.qweather.com/docs/resource/glossary/#update-time</a>
*/
private String updateTime;
/**
* 当前数据的响应式页面,便于嵌入网站或应用
*/
private String fxLink;
private JSONObject refer;
private JSON data;
public AbstractWeatherProxyWrappedEntity() {
}
// 标记数据列
public abstract String getDataColumn();
// get and set method.
...
}
实时空气数据(例)
package org.fuyi.weather.domain.entity;
import lombok.*;
import org.fuyi.weather.infra.common.constant.WeatherProxyConstant;
import org.fuyi.weather.infra.common.entity.AbstractWeatherProxyWrappedEntity;
/**
* @author: <a href="mailto:thread.zhou@gmail.com">Fuyi</a>
* @time: 2022/2/1 下午4:07
* @since: 1.0
*/
@Data
@Builder
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = false)
public class AirRealTimeEntity extends AbstractWeatherProxyWrappedEntity {
@Override
public String getDataColumn() {
// WeatherProxyConstant.DataColumn.NOW --> "now"
return WeatherProxyConstant.DataColumn.NOW;
}
}
参考
说明
如有冒犯,我在这里先向您道歉,还请联系我进行处理
email: thread_zhou@126.com