Commit dae43c38 authored by hanfeng's avatar hanfeng

Merge branch 'base-modify' of http://10.5.52.3/youjj/cloud-platform into base-modify

# Conflicts:
#	xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/entity/VehicleModel.java
parents 8c3bec79 3c6df288
......@@ -8,5 +8,5 @@ public class PageParam {
@ApiModelProperty("当前页码")
Integer page;
@ApiModelProperty("每页限制")
Integer limit;
Integer limit;
}
package com.github.wxiaoqi.security.admin.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.math.BigDecimal;
/**
* 我的收藏
*/
@Table(name = "app_user_collect")
@Data
public class AppUserCollect {
@Id
@ApiModelProperty("主键id")
@GeneratedValue(generator = "JDBC")
private Integer id;
@ApiModelProperty("用户id")
@Column(name = "user_id")
private Integer userId;
@ApiModelProperty("收藏类型;1-租车;2-旅游")
@Column(name = "type")
private Integer type;
@ApiModelProperty("类型id")
@Column(name = "type_id")
private Integer typeId;
@ApiModelProperty("类型id名称")
@Column(name = "name")
private String name;
@ApiModelProperty("封面")
@Column(name = "cover")
private String cover;
@ApiModelProperty("价格")
@Column(name = "price")
private BigDecimal price;
@ApiModelProperty("单位")
@Column(name = "unit")
private BigDecimal unit;
@ApiModelProperty("创建时间")
@Column(name = "crt_time")
private Long crtTime;
@ApiModelProperty("更新时间")
@Column(name = "upd_time")
private Long updTime;
@ApiModelProperty("否取消;0-正常;1-取消")
@Column(name = "status")
private Integer status;
@ApiModelProperty("否取消;0-正常;1-取消")
@Column(name = "is_del")
private Integer isDel;
}
\ No newline at end of file
......@@ -18,6 +18,7 @@ public class AppUserLogin {
private int id;
@Column(name = "im_userid")
private Integer imUserid;
@Column(name = "username")
private String username;
private String password;
@Column(name = "wx_openid")
......
package com.github.wxiaoqi.security.admin.vo;
import lombok.Data;
/**
* 用户信息表
*/
@Data
public class AppUserVo {
private Integer id;
//用户id
private Integer userid;
//imid
private Integer imUserid;
///账号(手机号)
private String username;
//微信openid
private String wxOpenid;
//微信unionid
private String unionid;
//qq
private String openid;
//状态:0-启用,1-禁用
private Integer status;
//身份证号
private String idNumber;
//实名认证状态:0-未认证,1-已认证
private Integer certificationStatus;
//会员
private Integer isMember;
//昵称
private String nickname;
//真实姓名
private String realname;
//头像
private String headimgurl;
//邮箱
private String email;
//性别 0-女,1-男
private Integer sex;
//生日
private String birthday;
//个性签名
private String personSign;
//备注
private String remark;
}
......@@ -86,6 +86,11 @@
<artifactId>fastjson</artifactId>
<version>1.1.37</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<!--用于测试的,本例可省略-->
<dependency>
<groupId>org.springframework.boot</groupId>
......
package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.entity.AppUserCollect;
import com.github.wxiaoqi.security.admin.mapper.AppUserCollectMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* ${DESCRIPTION}
*
* @author wanghaobin
* @create 2017-06-08 16:23
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class AppUserCollectBiz extends BaseBiz<AppUserCollectMapper, AppUserCollect> {
//新增收藏
public ObjectRestResponse addUserCollect(){
return ObjectRestResponse.succ();
}
}
......@@ -4,11 +4,14 @@ import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.mapper.AppUserDetailMapper;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
/**
......@@ -21,6 +24,7 @@ import java.util.List;
@Transactional(rollbackFor = Exception.class)
public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail> {
@Override
@CacheClear(pre="user{1.userid}")
public void updateSelectiveById(AppUserDetail entity) {
......@@ -33,7 +37,7 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
* @return
*/
@Cache(key="user{1}")
public AppUserDetail getUserByUserid(Integer userid){
public AppUserDetail getUserByUserid(Integer userid) {
Example example = new Example(AppUserDetail.class);
example.createCriteria().andEqualTo("userid", userid).andEqualTo("isdel", 0);
List<AppUserDetail> list = mapper.selectByExample(example);
......@@ -44,6 +48,28 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
}
public AppUserVo getUserInfoById(Integer userid){
return mapper.getUserInfo(userid);
}
@CacheClear(pre="user{1.userid}")
public void updUuserInfoById(AppUserVo userVo){
AppUserDetail entity =new AppUserDetail();
try {
BeanUtils.copyProperties(entity,userVo);
if(entity!=null){
super.updateSelectiveById(entity);
}
} catch (Exception e) {
e.printStackTrace();
}
}
......
package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.entity.AppUserCollect;
import tk.mybatis.mapper.common.Mapper;
public interface AppUserCollectMapper extends Mapper<AppUserCollect> {
}
\ No newline at end of file
package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
public interface AppUserDetailMapper extends Mapper<AppUserDetail> {
//查询用户信息
public AppUserVo getUserInfo(@Param("userId") Integer userId);
}
\ No newline at end of file
package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.AppUserBiz;
import com.github.wxiaoqi.security.admin.biz.AppUserDetailBiz;
import com.github.wxiaoqi.security.admin.entity.AppUser;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.entity.Group;
import com.github.wxiaoqi.security.admin.entity.User;
import com.github.wxiaoqi.security.admin.vo.AppUserGroups;
import com.github.wxiaoqi.security.admin.vo.AppUserInfoVo;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.msg.TableResultResponse;
import com.github.wxiaoqi.security.common.rest.CommonBaseController;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -35,6 +40,9 @@ public class AppUserController extends CommonBaseController {
@Autowired
private UserAuthConfig userAuthConfig;
@Autowired
AppUserDetailBiz userDetailBiz;
@GetMapping("page")
public TableResultResponse list(@RequestParam Map<String, Object> params) {
Query query = new Query(params);
......@@ -86,4 +94,39 @@ public class AppUserController extends CommonBaseController {
return new ObjectRestResponse();
}
/**
* 获取用户信息
* @return
* @throws Exception
*/
@GetMapping("/info")
public ObjectRestResponse<AppUserVo> getUserInfo()throws Exception {
String username = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId();
if (username == null) {
throw new Exception();
}
Integer userid=Integer.parseInt(username);
AppUserVo user = userDetailBiz.getUserInfoById(userid);
if (user == null) {
throw new Exception();
}
return ObjectRestResponse.succ(user);
}
/**
* 更新用户信息
* @param userVo
* @return
* @throws Exception
*/
@PostMapping("/edit")
public ObjectRestResponse edit(@RequestBody AppUserVo userVo)throws Exception {
if(userVo==null||userVo.getId()==null){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数为空");
}
userDetailBiz.updUuserInfoById(userVo);
return ObjectRestResponse.succ();
}
}
<?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="com.github.wxiaoqi.security.admin.mapper.AppUserCollectMapper">
</mapper>
\ No newline at end of file
<?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="com.github.wxiaoqi.security.admin.mapper.AppUserDetailMapper">
<resultMap id="AppUserVoMap" type="com.github.wxiaoqi.security.admin.vo.AppUserVo">
<result column="id" property="id" />
<result column="userid" property="userid" />
<result column="username" property="username" />
<result column="wxOpenid" property="wx_openid" />
<result column="unionid" property="unionid" />
<result column="openid" property="openid" />
<result column="status" property="status" />
<result column="idNumber" property="id_number" />
<result column="certificationStatus" property="certification_status" />
<result column="isMember" property="is_member" />
<result column="nickname" property="nickname" />
<result column="realname" property="realname" />
<result column="headimgurl" property="headimgurl" />
<result column="isMember" property="is_member" />
<result column="birthday" property="birthday" />
<result column="email" property="email" />
<result column="sex" property="sex" />
<result column="personSign" property="person_sign" />
<result column="remark" property="remark" />
</resultMap>
<!-- 获取用户信息 -->
<select id="getUserInfo" resultMap="AppUserVoMap">
select * from app_user_login l
left join app_user_detail d
on d.userid = l.id where d.userid = #{userId} limit 1
</select>
</mapper>
\ No newline at end of file
......@@ -47,6 +47,7 @@
<module>xx-vehicle</module>
<module>xx-universal</module>
<module>xx-tour</module>
<module>xx-im</module>
</modules>
<packaging>pom</packaging>
<developers>
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ace-security</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xx-im</artifactId>
<packaging>pom</packaging>
<modules>
<module>xx-im-api</module>
<module>xx-im-server</module>
</modules>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xx-im-api</artifactId>
</project>
\ No newline at end of file
package com.xxfc.platform.im.feign;
import com.github.wxiaoqi.security.common.msg.BaseResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* ${DESCRIPTION}
*
* @author wanghaobin
* @create 2017-06-21 8:11
*/
@FeignClient(value = "xx-im")
public interface ImFeign {
/**
* 注册
* @param map
* @return
*/
@RequestMapping(value = "/user/app/unauth/register", method = RequestMethod.POST)
public BaseResponse register(@RequestBody Map<String,Object> map);
/**
* 登录
* @param map
* @return
*/
@RequestMapping(value = "/user/app/unauth/login", method = RequestMethod.POST)
public BaseResponse login(@RequestBody Map<String,Object> map);
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>xx-common-platform</artifactId>
<groupId>com.xxfc.common</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xx-im-server</artifactId>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
<!-- MyBatis Generator -->
<!-- Java接口和实体类 -->
<targetJavaProject>${basedir}/src/main/java</targetJavaProject>
<targetMapperPackage>com.xxfc.platform.order.mapper
</targetMapperPackage>
<targetModelPackage>com.xxfc.platform.order.entity
</targetModelPackage>
<!-- XML生成路径 -->
<targetResourcesProject>${basedir}/src/main/resources
</targetResourcesProject>
<targetXMLPackage>mapper</targetXMLPackage>
<!-- 依赖版本 -->
<!-- <mapper.version>3.4.0</mapper.version>-->
<mybatis.version>3.3.1</mybatis.version>
<mybatis.spring.version>1.2.4</mybatis.spring.version>
<poi.version>3.15</poi.version>
</properties>
<dependencies>
<!-- spring -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<!-- 缓存 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--nacos相关配置-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<!--引入开源后台项目的公共包-->
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-auth-client</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<!-- 引用缓存开源项目 -->
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-cache</artifactId>
<version>0.0.2</version>
</dependency>
<!-- 其他 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.mongodb.morphia</groupId>
<artifactId>morphia</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>7.1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.xxfc.platform.im;
import com.ace.cache.EnableAceCache;
import com.github.wxiaoqi.security.auth.client.EnableAceAuthClient;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableDiscoveryClient
@EnableScheduling
@EnableAceAuthClient
@EnableFeignClients({"com.github.wxiaoqi.security.auth.client.feign", "com.xxfc.platform"})
@EnableAceCache
@EnableCaching
public class ImApplication {
public static void main(String[] args) {
SpringApplication.run(ImApplication.class, args);
}
}
package com.xxfc.platform.im.biz;
import com.mongodb.DB;
import com.mongodb.Mongo;
public class MGDBCollection {
private static final String HOST = "10.5.52.3";
private static final int PORT = 28018;
private static final String DB_NAME = "imapi";
private static Mongo mongo;
private static DB db;
static {
// 连接到MongoDB
mongo = new Mongo(HOST, PORT);
// 打开数据库 testDB
db = mongo.getDB(DB_NAME);
}
public static DB getDB(){
return db;
}
}
package com.xxfc.platform.im.biz;
import com.mongodb.DB;
import com.mongodb.Mongo;
public class TigaseCollection {
private static final String HOST = "10.5.52.3";
private static final int PORT = 28018;
private static final String DB_NAME = "tigase";
private static Mongo mongo;
private static DB db;
static {
// 连接到MongoDB
mongo = new Mongo(HOST, PORT);
// 打开数据库 testDB
db = mongo.getDB(DB_NAME);
}
public static DB getDB(){
return db;
}
}
package com.xxfc.platform.im.biz;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.common.msg.BaseResponse;
import com.xxfc.platform.im.model.User;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
@Component
public class UserBiz {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 注册
* @param map
* @return
*/
public BaseResponse register(Map<String, Object> map){
BaseResponse baseResponse = new BaseResponse();
String str = "";
if(map.get("telephone") != null && !("").equals(map.get("telephone"))){
str += "telephone="+map.get("telephone").toString()+"&";
}
if(map.get("password") != null && !("").equals(map.get("password"))){
str += "password="+map.get("password").toString()+"&";
}
if(map.get("nickname") != null && !("").equals(map.get("nickname"))){
str += "nickname="+map.get("nickname").toString();
}
String result = this.doPost("http://10.5.52.3:6688/xxfcim/user/register",str) ;
JSONObject json = JSONObject.parseObject(result);
//如果已经注册过,查询出手机号对应用户信息执行登录返回
if(0 == json.getInteger("resultCode")){
String phone = map.get("telephone").toString();
Query query = new Query(Criteria.where("phone").is(phone));
User mgt = mongoTemplate.findOne(query, User.class);
if(mgt == null){
result = "系统错误";
}else{
Map<String,Object>params = new HashMap<String,Object>();
params.put("userId",mgt.getUserId());
params.put("telephone",mgt.getPhone());
params.put("password",mgt.getPassword());
result = this.login(params);
}
}
baseResponse.setStatus(200);
baseResponse.setMessage(result);
return baseResponse;
}
/**
* 登录
* @param map
* @return
*/
public String login(Map<String, Object> map) {
String str = "";
if(map.get("userId") != null && !("").equals(map.get("userId"))){
str += "userId="+map.get("userId").toString()+"&";
}
if(map.get("telephone") != null && !("").equals(map.get("telephone"))){
str += "telephone="+DigestUtils.md5Hex(map.get("telephone").toString())+"&";
}
if(map.get("password") != null && !("").equals(map.get("password"))){
str += "password="+map.get("password").toString();
}
str += "&areaCode=86";
String result = this.doPost("http://10.5.52.3:6688/xxfcim/user/login",str) ;
JSONObject json = JSONObject.parseObject(result);
json.put("password",map.get("password").toString());
return json.toJSONString();
}
/**
* 远程请求
* @param path
* @param params
* @return
*/
private String doPost(String path,String params){
HttpURLConnection connection = null;
InputStream is = null;
OutputStream os = null;
BufferedReader br = null;
String result = null;
try {
URL url = new URL(path);
// 通过远程url连接对象打开连接
connection = (HttpURLConnection) url.openConnection();
// 设置连接请求方式
connection.setRequestMethod("POST");
// 设置连接主机服务器超时时间:15000毫秒
connection.setConnectTimeout(15000);
// 设置读取主机服务器返回数据超时时间:60000毫秒
connection.setReadTimeout(60000);
// 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true
connection.setDoOutput(true);
// 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无
connection.setDoInput(true);
// 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// 通过连接对象获取一个输出流
os = connection.getOutputStream();
// 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的
os.write(params.getBytes());
// 通过连接对象获取一个输入流,向远程读取
if (connection.getResponseCode() == 200) {
is = connection.getInputStream();
// 对输入流对象进行包装:charset根据工作项目组的要求来设置
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
StringBuffer sbf = new StringBuffer();
String temp = null;
// 循环遍历一行一行读取数据
while ((temp = br.readLine()) != null) {
sbf.append(temp);
sbf.append("\r\n");
}
result = sbf.toString();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (null != br) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != os) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 断开与远程地址url的连接
connection.disconnect();
}
return result;
}
}
package com.xxfc.platform.im.model;
public class BaseExample {
protected String apiVersion;// 客户端使用的接口版本号
protected String model;// 客户端设备型号
protected String osVersion;// 客户端设备操作系统版本号
protected String serial;// 客户端设备序列号
protected Integer areaId;// 区县Id
protected Integer cityId;// 城市Id
protected String cityName;// 城市名称
protected Integer countryId;// 国家Id
protected Integer provinceId;// 省份Id
protected String address;// 详细地址
protected String location;// 位置描述
protected double latitude;// 纬度
protected double longitude;// 经度
public String getApiVersion() {
return apiVersion;
}
public void setApiVersion(String apiVersion) {
this.apiVersion = apiVersion;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public String getOsVersion() {
return osVersion;
}
public void setOsVersion(String osVersion) {
this.osVersion = osVersion;
}
public String getSerial() {
return serial;
}
public void setSerial(String serial) {
this.serial = serial;
}
public Integer getAreaId() {
return areaId;
}
public void setAreaId(Integer areaId) {
this.areaId = areaId;
}
public Integer getCityId() {
return cityId;
}
public void setCityId(Integer cityId) {
this.cityId = cityId;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public Integer getCountryId() {
return countryId;
}
public void setCountryId(Integer countryId) {
this.countryId = countryId;
}
public Integer getProvinceId() {
return provinceId;
}
public void setProvinceId(Integer provinceId) {
this.provinceId = provinceId;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
}
package com.xxfc.platform.im.model;
import org.bson.types.ObjectId;
import org.mongodb.morphia.annotations.Entity;
import org.mongodb.morphia.annotations.Id;
import org.mongodb.morphia.annotations.Indexed;
import org.mongodb.morphia.annotations.NotSaved;
import java.util.List;
@Entity(value = "company", noClassnameStored = true)
public class Company {
private @Id
ObjectId id; //公司id
private @Indexed String companyName;// 公司名称
private @Indexed int createUserId;//创建者的用户id
private @Indexed int deleteUserId; //删除者id,默认0 注:当用户执行删除公司操作后,将userId存入,隐藏相关信息。
private @Indexed List<ObjectId> rootDpartId; //根部门Id,可能有多个
private @Indexed long createTime; //创建时间
private long deleteTime; //删除时间
private @Indexed String noticeContent;// 公司公告(通知)
private long noticeTime; //公告时间
private @Indexed int empNum; //公司员工总数
private @Indexed int type = 0; //类型值 5:默认加入的公司
private @NotSaved List<Department> departments; //公司的部门列表
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public List<Department> getDepartments() {
return departments;
}
public void setDepartments(List<Department> departments) {
this.departments = departments;
}
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
public int getCreateUserId() {
return createUserId;
}
public void setCreateUserId(int createUserId) {
this.createUserId = createUserId;
}
public int getDeleteUserId() {
return deleteUserId;
}
public void setDeleteUserId(int deleteUserId) {
this.deleteUserId = deleteUserId;
}
public List<ObjectId> getRootDpartId() {
return rootDpartId;
}
public void setRootDpartId(List<ObjectId> rootDpartId) {
this.rootDpartId = rootDpartId;
}
public long getCreateTime() {
return createTime;
}
public void setCreateTime(long createTime) {
this.createTime = createTime;
}
public long getDeleteTime() {
return deleteTime;
}
public void setDeleteTime(long deleteTime) {
this.deleteTime = deleteTime;
}
public String getNoticeContent() {
return noticeContent;
}
public void setNoticeContent(String noticeContent) {
this.noticeContent = noticeContent;
}
public long getNoticeTime() {
return noticeTime;
}
public void setNoticeTime(long noticeTime) {
this.noticeTime = noticeTime;
}
public int getEmpNum() {
return empNum;
}
public void setEmpNum(int empNum) {
this.empNum = empNum;
}
}
\ No newline at end of file
package com.xxfc.platform.im.model;
import com.alibaba.fastjson.JSON;
import lombok.Getter;
import lombok.Setter;
import org.mongodb.morphia.annotations.Entity;
import org.mongodb.morphia.annotations.Id;
@Getter
@Setter
@Entity(value="config",noClassnameStored=true)
public class Config {
/**
*
*/
private @Id long id=10000;
public int XMPPTimeout=15;// xmpp超时时间 秒
// private String apiUrl;
// private String downloadAvatarUrl;
// private String downloadUrl;
// private String uploadUrl;
// private String liveUrl;
//private String freeswitch;
// private String jitsiServer;
//private String meetingHost;
//聊天内容的 文件有效期 默认 -1
private int fileValidTime=-1;
//聊天记录// 过期销毁时长 -1、0:永久 0.04:一小时 1:1天 7:一周 30:一个月 120:一季 365:一年
private int chatRecordTimeOut=-1;
private int telephoneSearchUser = 1; //手机号搜索用户 0 :关闭 1:精确搜索 2:模糊搜索 默认精准搜索
private int nicknameSearchUser = 2; //昵称搜索用户 0 :关闭 1:精确搜索 2:模糊搜索 默认模糊搜索
private int isTelephoneLogin=1; //手机号登陆 1 开启 0 关闭
private int isUserIdLogin=1; //用户ID登陆 1 开启 0 关闭
private String helpUrl;
private String videoLen;
private String audioLen;
private String shareUrl;
private String softUrl;
private int distance;
private int isAuthApi=1;//检验api 权限
private int isKeyWord; // 是否开启关键词过滤 1:开启 0:关闭
private int isSaveMsg=1; // 是否保存单聊聊天记录 1:开启 0:关闭
private int isSaveMucMsg=1; // 是否保存群聊聊天记录 1:是 0:否
private int isMsgSendTime; // 是否强制同步消息发送时间 1:是 0:否
private int regeditPhoneOrName = 0;// 0:使用手机号注册,1:使用用户名注册
private int registerInviteCode; // 注册邀请码
private int isSaveRequestLogs; // 是否保存接口请求日志
/** 用户隐私设置参数 **/
private double roamingTime=-2;// 漫游时长 -2:不漫游 -1、0:永久 0.04:一小时 1:1天 7:一周 30:一个月 120:一季 365:一年
private double outTimeDestroy=-1;// 过期销毁时长 -1、0:永久 0.04:一小时 1:1天 7:一周 30:一个月 120:一季 365:一年
private String language="zh";// 客户端默认语种
private int isFriendsVerify = 1;// 是否需要好友验证 1:开启 0:关闭
private int isEncrypt;// 是否开启加密传输 1:开启 0:关闭
private int isMultiLogin=1;// 是否开启多点登录 1:开启 0:关闭
private int isVibration; // 是否振动 1:开启 0:关闭
private int isTyping; // 让对方知道我正在输入 1:开启 0:关闭
private int isUseGoogleMap;// 使用google地图 1:开启 0:关闭
private Integer isKeepalive = 1;// 是否安卓后台常驻保活app 0:取消保活 1:保活
private Integer phoneSearch = 1;// 允许手机号搜索 1 允许 0 不允许
private Integer nameSearch = 1;// 允许昵称搜索 1 允许 0 不允许
private Integer showLastLoginTime = 1;// 显示上次上线时间 -1 所有人不显示 1所有人显示 2 所有好友显示 3 手机联系人显示
private Integer showTelephone = 1;// 显示我的手机号码 -1 所有人不显示 1所有人显示 2 所有好友显示 3 手机联系人显示
/** 建立群组默认参数设置 **/
private int maxUserSize=1000;// 群成员人数上限
private int isAttritionNotice=1;// 群组减员发送通知(踢人,退出) 1:开启 0:关闭
private Integer isLook=1;// 群组是否可见 0为可见 1为不可见
private int showRead=0;// 群主设置 群内消息是否发送已读 回执 显示数量 1:是 0:否
private Integer isNeedVerify=0; // 加群是否需要通过验证 0:不要 1:要
private int showMember=1;// 显示群成员给 普通用户 1 显示 0 不显示
private int allowSendCard=1;// 允许发送名片 好友 1 允许 0 不允许
private int allowInviteFriend=1;// 允许普通成员邀请好友 1:允许 0:不允许
private int allowUploadFile=1;// 允许群成员上传群共享文件 1:允许 0:不允许
private int allowConference=1;// 允许成员 召开会议 1:允许 0:不允许
private int allowSpeakCourse=1;// 允许群成员 开启 讲课 1:允许 0:不允许
private String iosPushServer="apns";// apns 推送
private String SMSType = "aliyun";// 短信服务支持
private int isAutoAddressBook;// 是否自动添加通讯录好友
private double giftRatio = 0.50;// 直播礼物分成比例
private String promotionUrl;// 客服推广链接
private String defaultTelephones;// 注册默认自动添加为好友 的用户手机号
private byte isOpenSMSCode = 1; //是否开启短信验证码
private byte isOpenReceipt=1;//是否启用 消息回执
private byte isOpenCluster;// 是否开启集群
private byte isOpenVoip;// 是否打开ios voip推送
//以下为版本更新的字段
private int androidVersion; //Android 版本号
private int iosVersion; //ios版本号
private String androidAppUrl; //Android App的下载地址
private String iosAppUrl; // IOS App 的下载地址
private String androidExplain; //Android 说明
private String iosExplain; // ios 说明
public Config() {
}
//需要返回给客户端
public Config(Config config) {
super();
this.id = config.id;
this.fileValidTime = config.getFileValidTime();
this.chatRecordTimeOut = config.getChatRecordTimeOut();
this.telephoneSearchUser = config.getTelephoneSearchUser();
this.isTelephoneLogin = config.getIsTelephoneLogin();
this.isUserIdLogin = config.getIsUserIdLogin();
this.registerInviteCode = config.getRegisterInviteCode();
this.helpUrl = config.getHelpUrl();
this.videoLen = config.getVideoLen();
this.audioLen = config.getAudioLen();
this.shareUrl = config.getShareUrl();
this.softUrl = config.getSoftUrl();
this.distance = config.getDistance();
this.androidVersion = config.getAndroidVersion();
this.iosVersion = config.getIosVersion();
this.androidAppUrl = config.getAndroidAppUrl();
this.iosAppUrl = config.getIosAppUrl();
this.androidExplain = config.getAndroidExplain();
this.iosExplain = config.getIosExplain();
this.isOpenSMSCode = config.getIsOpenSMSCode();
this.isOpenReceipt = config.getIsOpenReceipt();
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
package com.xxfc.platform.im.model;
import org.bson.types.ObjectId;
import org.mongodb.morphia.annotations.Entity;
import org.mongodb.morphia.annotations.Id;
import org.mongodb.morphia.annotations.Indexed;
import org.mongodb.morphia.annotations.NotSaved;
import java.util.List;
@Entity(value = "department", noClassnameStored = true)
public class Department {
private @Id
ObjectId id; //部门id
private @Indexed
ObjectId companyId; //公司id,表示该部门所属的公司
private @Indexed
ObjectId parentId; //parentId 表示上一级的部门ID
private @Indexed String departName; //部门名称
private @Indexed int createUserId; //创建者userId
private long createTime; //创建时间
private int empNum = -1; //部门总人数
private @Indexed int type = 0; //类型值 0:普通部门 1:根部门 2:分公司 5:默认加入的部门 6.客服部门
//此属性用于封装部门员工列表
private @NotSaved List<Employee> employees; //部门员工列表
//此属性用于封装该部门的子部门
private @NotSaved List<Department> childDepartment; //子部门
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
public List<Employee> getEmployees() {
return employees;
}
public void setEmployees(List<Employee> employees) {
this.employees = employees;
}
public ObjectId getCompanyId() {
return companyId;
}
public void setCompanyId(ObjectId companyId) {
this.companyId = companyId;
}
public ObjectId getParentId() {
return parentId;
}
public void setParentId(ObjectId parentId) {
this.parentId = parentId;
}
public String getDepartName() {
return departName;
}
public void setDepartName(String departName) {
this.departName = departName;
}
public int getCreateUserId() {
return createUserId;
}
public void setCreateUserId(int createUserId) {
this.createUserId = createUserId;
}
public long getCreateTime() {
return createTime;
}
public void setCreateTime(long createTime) {
this.createTime = createTime;
}
public int getEmpNum() {
return empNum;
}
public void setEmpNum(int empNum) {
this.empNum = empNum;
}
public List<Department> getChildDepartment() {
return childDepartment;
}
public void setChildDepartment(List<Department> childDepartment) {
this.childDepartment = childDepartment;
}
}
package com.xxfc.platform.im.model;
import org.bson.types.ObjectId;
import org.mongodb.morphia.annotations.*;
@Entity(value = "employee", noClassnameStored = true)
@Indexes(value = {@Index(fields = {@Field("userId"),@Field("departmentId"),@Field("companyId"),@Field("role") }) })
public class Employee {
private @Id
ObjectId id; //员工id
private @Indexed int userId; //用户id,用于和用户表关联
private @Indexed
ObjectId departmentId; //部门Id,表示员工所属部门
private @Indexed
ObjectId companyId; //公司id,表示员工所属公司
private @Indexed int role; //员工角色:0:普通员工 1:部门管理者 2:管理员 3:公司创建者(超管)
private String position = "员工"; //职位(头衔),如:经理、总监等
private @NotSaved String nickname; //用户昵称,和用户表一致
//客服模块所需字段
private int chatNum;//当前会话的人数
private int isPause;//是否暂停 0:暂停,1:正常
private @NotSaved int operationType;//操作类型 1.建立会话操作 2.结束回话操作
private @NotSaved int isCustomer;//是否为客服 0:不是 1:是
public int getIsCustomer() {
return isCustomer;
}
public void setIsCustomer(int isCustomer) {
this.isCustomer = isCustomer;
}
public int getOperationType() {
return operationType;
}
public void setOperationType(int operationType) {
this.operationType = operationType;
}
public int getIsPause() {
return isPause;
}
public void setIsPause(int isPause) {
this.isPause = isPause;
}
public int getChatNum() {
return chatNum;
}
public void setChatNum(int chatNum) {
this.chatNum = chatNum;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public ObjectId getDepartmentId() {
return departmentId;
}
public void setDepartmentId(ObjectId departmentId) {
this.departmentId = departmentId;
}
public ObjectId getCompanyId() {
return companyId;
}
public void setCompanyId(ObjectId companyId) {
this.companyId = companyId;
}
public int getRole() {
return role;
}
public void setRole(int role) {
this.role = role;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
}
package com.xxfc.platform.im.model;
import com.alibaba.fastjson.annotation.JSONField;
import com.xxfc.platform.im.utils.DateUtil;
import org.bson.types.ObjectId;
import org.mongodb.morphia.annotations.Entity;
import org.mongodb.morphia.annotations.Id;
import org.mongodb.morphia.annotations.Index;
import org.mongodb.morphia.annotations.Indexes;
@Entity(value = "u_fans", noClassnameStored = true)
@Indexes(@Index("userId,toUserId"))
public class Fans {
private @JSONField(serialize = false) @Id
ObjectId id;// 粉丝关系Id
private long time;// 关注世间
private String toNickname;// 粉丝用户昵称
private int toUserId;// 粉丝用户Id
private int userId;// 用户Id
public Fans() {
super();
}
public Fans(int userId, int toUserId) {
super();
this.userId = userId;
this.toUserId = toUserId;
this.time = DateUtil.currentTimeSeconds();
}
public ObjectId getId() {
return id;
}
public long getTime() {
return time;
}
public String getToNickname() {
return toNickname;
}
public int getToUserId() {
return toUserId;
}
public int getUserId() {
return userId;
}
public void setId(ObjectId id) {
this.id = id;
}
public void setTime(long time) {
this.time = time;
}
public void setToNickname(String toNickname) {
this.toNickname = toNickname;
}
public void setToUserId(int toUserId) {
this.toUserId = toUserId;
}
public void setUserId(int userId) {
this.userId = userId;
}
}
package com.xxfc.platform.im.model;
import com.alibaba.fastjson.annotation.JSONField;
import com.xxfc.platform.im.utils.DateUtil;
import org.bson.types.ObjectId;
import org.mongodb.morphia.annotations.*;
import java.util.List;
@Entity(value = "u_friends", noClassnameStored = true)
@Indexes(@Index("userId,toUserId"))
public class Friends {
public static class Blacklist {
public static final int No = 0;
public static final int Yes = 1;
}
public static class Status {
/** 关注 */
public static final int Attention = 1;
/** 好友 */
public static final int Friends = 2;
/** 陌生人 */
public static final int Stranger = 0;
}
private Integer blacklist=0;// 是否拉黑(1=是;0=否)
private Integer isBeenBlack=0; //是否被拉黑(1=是;0=否)
private Integer offlineNoPushMsg=0;//消息免打扰(1=是;0=否)
private long createTime;// 建立关系时间
@Id
@JSONField(serialize = false)
private ObjectId id;// 关系Id
private long modifyTime;// 修改时间
private long lastTalkTime; //最后沟通时间
private long msgNum;//未读消息数量
private String remarkName;// 备注
private Integer status;// 状态(1=关注;2=好友;0=陌生人 ;-1=黑名单)
private String toNickname;// 好友昵称
private int toUserId;// 好友Id
private int toUserType;// 好友的user type
private List<Integer> toFriendsRole;// 好友的角色信息
private int userId;// 用户Id
@NotSaved
private String nickname;// 自己的昵称
//聊天记录过期时间 -1 为永久 数值 为天数
private double chatRecordTimeOut=-1;
/*private ObjectId groupId;//分组ID
private String groupName;//分组名称
*/
private String describe;// 描述
private Integer fromAddType = 0;// 通过什么方式添加 0 : 系统添加好友 1:二维码 2:名片 3:群组 4: 手机号搜索 5:昵称搜索
public Friends() {
super();
}
public Friends(int userId) {
super();
this.userId = userId;
}
public Friends(int userId, int toUserId) {
super();
this.userId = userId;
this.toUserId = toUserId;
this.createTime = DateUtil.currentTimeSeconds();
}
public Friends(int userId, int toUserId, String toNickname, Integer status) {
super();
this.userId = userId;
this.toUserId = toUserId;
this.toNickname=toNickname;
this.status = status;
this.createTime = DateUtil.currentTimeSeconds();
}
public Friends(int userId, int toUserId, String toNickname, Integer status, Integer toUserType, List<Integer> toFriendsRole) {
super();
this.userId = userId;
this.toUserId = toUserId;
this.toNickname=toNickname;
this.status = status;
this.createTime = DateUtil.currentTimeSeconds();
this.toUserType = toUserType;
this.toFriendsRole = toFriendsRole;
}
public Friends(int userId, int toUserId, String toNickname, Integer status, Integer blacklist, Integer isBeenBlack) {
super();
this.userId = userId;
this.toUserId = toUserId;
this.toNickname=toNickname;
this.status = status;
this.blacklist = blacklist;
this.isBeenBlack=isBeenBlack;
this.createTime = DateUtil.currentTimeSeconds();
}
public Friends(int userId, int toUserId, String toNickname, Integer status, Integer blacklist, Integer isBeenBlack, List<Integer> toUserRole, int toUserType, Integer fromAddType) {
super();
this.userId = userId;
this.toUserId = toUserId;
this.toNickname=toNickname;
this.status = status;
this.blacklist = blacklist;
this.isBeenBlack=isBeenBlack;
this.toFriendsRole=toUserRole;
this.createTime = DateUtil.currentTimeSeconds();
this.toUserType=toUserType;
this.fromAddType=fromAddType;
}
public Friends(int userId, int toUserId, String toNickname, Integer status, Integer blacklist, Integer isBeenBlack, List<Integer> toUserRole, String toRemarkName, int toUserType) {
super();
this.userId = userId;
this.toUserId = toUserId;
this.toNickname=toNickname;
this.status = status;
this.blacklist = blacklist;
this.isBeenBlack=isBeenBlack;
this.toFriendsRole=toUserRole;
this.createTime = DateUtil.currentTimeSeconds();
this.remarkName = toRemarkName;
this.toUserType=toUserType;
}
public Integer getBlacklist() {
return blacklist;
}
public Integer getIsBeenBlack() {
return isBeenBlack;
}
public void setIsBeenBlack(Integer isBeenBlack) {
this.isBeenBlack = isBeenBlack;
}
public Integer getOfflineNoPushMsg() {
return offlineNoPushMsg;
}
public void setOfflineNoPushMsg(Integer offlineNoPushMsg) {
this.offlineNoPushMsg = offlineNoPushMsg;
}
public long getCreateTime() {
return createTime;
}
public ObjectId getId() {
return id;
}
public long getModifyTime() {
return modifyTime;
}
public String getRemarkName() {
return remarkName;
}
public Integer getStatus() {
return status;
}
public String getToNickname() {
return toNickname;
}
public int getToUserId() {
return toUserId;
}
public int getUserId() {
return userId;
}
public void setBlacklist(Integer blacklist) {
this.blacklist = blacklist;
}
public void setCreateTime(long createTime) {
this.createTime = createTime;
}
public void setId(ObjectId id) {
this.id = id;
}
public void setModifyTime(long modifyTime) {
this.modifyTime = modifyTime;
}
public void setRemarkName(String remarkName) {
this.remarkName = remarkName;
}
public void setStatus(Integer status) {
this.status = status;
}
public void setToNickname(String toNickname) {
this.toNickname = toNickname;
}
public void setToUserId(int toUserId) {
this.toUserId = toUserId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public long getLastTalkTime() {
return lastTalkTime;
}
public void setLastTalkTime(long lastTalkTime) {
this.lastTalkTime = lastTalkTime;
}
public long getMsgNum() {
return msgNum;
}
public void setMsgNum(long msgNum) {
this.msgNum = msgNum;
}
public double getChatRecordTimeOut() {
return chatRecordTimeOut;
}
public void setChatRecordTimeOut(double chatRecordTimeOut) {
this.chatRecordTimeOut = chatRecordTimeOut;
}
public List<Integer> getToFriendsRole() {
return toFriendsRole;
}
public void setToFriendsRole(List<Integer> toFriendsRole) {
this.toFriendsRole = toFriendsRole;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public int getToUserType() {
return toUserType;
}
public void setToUserType(int toUserType) {
this.toUserType = toUserType;
}
public String getDescribe() {
return describe;
}
public void setDescribe(String describe) {
this.describe = describe;
}
public Integer getFromAddType() {
return fromAddType;
}
public void setFromAddType(Integer fromAddType) {
this.fromAddType = fromAddType;
}
}
\ No newline at end of file
package com.xxfc.platform.im.model;
import com.alibaba.fastjson.JSON;
public class KSession {
private String telephone;
private Integer userId;
private int deviceId;
private String channelId;
private String language="zh";
public KSession() {
super();
}
public KSession(String telephone, Integer userId, String language) {
super();
this.telephone = telephone;
this.userId = userId;
this.language=language;
}
public KSession(String telephone, Integer userId) {
super();
this.telephone = telephone;
this.userId = userId;
}
public KSession(String telephone, Integer userId, int deviceId, String channelId, String language) {
super();
this.telephone = telephone;
this.userId = userId;
this.channelId=channelId;
this.language=language;
}
public String getTelephone() {
return telephone;
}
public Integer getUserId() {
return userId;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
public String getChannelId() {
return channelId;
}
public void setChannelId(String channelId) {
this.channelId = channelId;
}
public int getDeviceId() {
return deviceId;
}
public void setDeviceId(int deviceId) {
this.deviceId = deviceId;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
}
package com.xxfc.platform.im.model;
public class UserExample extends BaseExample {
private Long birthday;
private String description;
private String idcard;
private String idcardUrl;
private String name;
private String nickname;
private String password;
private Integer sex; //0:男 1:女
private String telephone;
/**
* 账号
*/
private String account;
private int userId=0;
private String areaCode="86";
private String randcode;
private String phone;
private Integer userType;
private String appId;//ios 当前包名
private int xmppVersion; //xmpp 心跳包的时候用到
private Integer d = 0;
private Integer w = 0;
private String email;
private String payPassWord; //支付密码
private int multipleDevices=-1; //多设备登陆
private byte isSmsRegister = 0; //是否使用短信验证码注册 0:不是 1:是
private String area;// 用户地理位置
private String myInviteCode; //我的邀请码
private String inviteCode; //注册时填写的邀请码
private String msgBackGroundUrl;// 朋友圈背景URL
private int isSdkLogin;// 第三方登录标识 0 不是 1 是
private int loginType;// 登录类型 0:账号密码登录,1:短信验证码登录
private String verificationCode;// 短信验证码
//当前登陆设备
private String deviceKey;
public Long getBirthday() {
return birthday;
}
public void setBirthday(Long birthday) {
this.birthday = birthday;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getIdcard() {
return idcard;
}
public void setIdcard(String idcard) {
this.idcard = idcard;
}
public String getIdcardUrl() {
return idcardUrl;
}
public void setIdcardUrl(String idcardUrl) {
this.idcardUrl = idcardUrl;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public Integer getUserType() {
return userType;
}
public void setUserType(Integer userType) {
this.userType = userType;
}
public Integer getD() {
return d;
}
public void setD(Integer d) {
this.d = d;
}
public Integer getW() {
return w;
}
public void setW(Integer w) {
this.w = w;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
public String getAreaCode() {
return areaCode;
}
public void setAreaCode(String areaCode) {
this.areaCode = areaCode;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getRandcode() {
return randcode;
}
public void setRandcode(String randcode) {
this.randcode = randcode;
}
public int getXmppVersion() {
return xmppVersion;
}
public void setXmppVersion(int xmppVersion) {
this.xmppVersion = xmppVersion;
}
public int getMultipleDevices() {
return multipleDevices;
}
public void setMultipleDevices(int multipleDevices) {
this.multipleDevices = multipleDevices;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getDeviceKey() {
return deviceKey;
}
public void setDeviceKey(String deviceKey) {
this.deviceKey = deviceKey;
}
public String getInviteCode() {
return inviteCode;
}
public void setInviteCode(String inviteCode) {
this.inviteCode = inviteCode;
}
public String getPayPassWord() {
return payPassWord;
}
public void setPayPassWord(String payPassWord) {
this.payPassWord = payPassWord;
}
public byte getIsSmsRegister() {
return isSmsRegister;
}
public void setIsSmsRegister(byte isSmsRegister) {
this.isSmsRegister = isSmsRegister;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getMyInviteCode() {
return myInviteCode;
}
public void setMyInviteCode(String myInviteCode) {
this.myInviteCode = myInviteCode;
}
public String getMsgBackGroundUrl() {
return msgBackGroundUrl;
}
public void setMsgBackGroundUrl(String msgBackGroundUrl) {
this.msgBackGroundUrl = msgBackGroundUrl;
}
public int getIsSdkLogin() {
return isSdkLogin;
}
public void setIsSdkLogin(int isSdkLogin) {
this.isSdkLogin = isSdkLogin;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public int getLoginType() {
return loginType;
}
public void setLoginType(int loginType) {
this.loginType = loginType;
}
public String getVerificationCode() {
return verificationCode;
}
public void setVerificationCode(String verificationCode) {
this.verificationCode = verificationCode;
}
}
package com.xxfc.platform.im.properties;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.mapping.Language;
import java.util.List;
@Getter
@Setter
@Configuration
@ConfigurationProperties(prefix="im")
public class KApplicationProperties {
// ,locations="classpath:application-test.properties" //外网测试环境
// ,locations="classpath:application-local.properties" //本地测试环境
//// application
public KApplicationProperties() {
// TODO Auto-generated constructor stub
}
private MongoConfig mongoConfig;
private RedisConfig redisConfig;
private XMPPConfig xmppConfig;
private AppConfig appConfig;
private SmsConfig smsConfig;
private PushConfig pushConfig;
private WXConfig wxConfig;
private AliPayConfig aliPayConfig;
private MQConfig mqConfig;
@Setter
@Getter
public static class MongoConfig {
/**
* 数据库链接 127.0.0.1:27017,127.0.0.2:28018
*/
private String uri;
private String dbName;
private String roomDbName;
//配置是否使用集群模式 读写分离 0 单机 模式 1:集群模式
private int cluster = 0;
private String username;
private String password;
private int connectTimeout=20000;
private int socketTimeout=20000;
private int maxWaitTime=20000;
}
@Setter
@Getter
public static class XMPPConfig {
private String host;
private int port;
private String serverName;
private String username;
private String password;
/**
* 数据库链接 127.0.0.1:27017,127.0.0.2:28018
*/
private String dbUri;
private String dbName;
private String dbUsername;
private String dbPassword;
}
@Setter
@Getter
public static class RedisConfig {
private String address;
private int database = 0;
private String password;
private int connectionMinimumIdleSize=32;
private int connectionPoolSize=64;
private int connectTimeout=10000;
private int pingConnectionInterval=500;
private int pingTimeout=10000;
private int timeout=10000;
private String host;
private int port;
private short isCluster=0; //是否开启集群 0 关闭 1开启
}
@Getter
@Setter
public static class AppConfig {
private String uploadDomain = "http://upload.server.com";//上传服务器域名
private String apiKey;
private List<Language> languages; //语言
/**
* ip 数据库目录
*/
private String qqzengPath;
private int openTask = 1;//是否开启定时任务
private int distance = 20;
private byte isBeta=0;//是否测试版本 测试版本 附近的人和 所有房间不返回值
private byte isDebug=1;//是否开启调试 打印日志用到
private String wxChatUrl;// 微信公众号群聊网页路径
}
@Getter
@Setter
public static class PushConfig{
// 企业版 app 包名
protected String betaAppId;
//appStore 版本 App 包名
protected String appStoreAppId;
}
@Getter
@Setter
public static class SmsConfig {
private int openSMS = 1;// 是否发送短信验证码
// 天天国际短信服务
private String host;
private int port;
private String api;
private String username;// 短信平台用户名
private String password;// 短信平台密码
private String templateChineseSMS;// 中文短信模板
private String templateEnglishSMS;// 英文短信模板
// 阿里云短信服务
private String product;// 云通信短信API产品,无需替换
private String domain;// 产品域名,无需替换
private String accesskeyid;// AK key
private String accesskeysecret;// AK value
private String signname;// 短信签名
private String chinase_templetecode;// 中文短信模板标识
private String english_templetecode;// 英文短信模板标识
}
@Getter
@Setter
public static class WXConfig {
// 微信认证的自己应用ID
private String appid;
// 商户ID
private String mchid;
// App secret
private String secret;
// api API密钥
private String apiKey;
//
/**
* 微信支付 回调 通知 url
* 默认 http://imapi.server.com/user/recharge/wxPayCallBack
*
*/
private String callBackUrl;
//证书文件 名称
private String pkPath;
}
@Getter
@Setter
public static class AliPayConfig{
// 支付宝认证应用Id
private String appid;
// 应用私钥
private String app_private_key;
// 字符编码格式
private String charset;
// 支付宝公钥
private String alipay_public_key;
// 支付宝回调地址
private String callBackUrl;
}
/**
* rocketmq 的 配置
*
* @author lidaye
*
*/
@Getter
@Setter
public static class MQConfig {
protected String nameAddr="localhost:9876";
protected int threadMin=Runtime.getRuntime().availableProcessors();
protected int threadMax=Runtime.getRuntime().availableProcessors()*2;
protected int batchMaxSize=20;
private byte isConsumerUserStatus=1;
}
}
package com.xxfc.platform.im.rest;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.common.msg.BaseResponse;
import com.xxfc.platform.im.biz.UserBiz;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
private UserBiz mtBiz;
/**
* 注册
* @param map
* @return
*/
@RequestMapping(value = "/app/unauth/register", method = RequestMethod.POST)
@ResponseBody
@IgnoreClientToken
public BaseResponse register(@RequestBody Map<String, Object> map) {
return mtBiz.register(map);
}
/**
* 登录
* @param map
* @return
*/
@RequestMapping(value = "/app/unauth/login", method = RequestMethod.POST)
@ResponseBody
@IgnoreClientToken
public BaseResponse login(@RequestBody Map<String, Object> map) {
BaseResponse baseResponse = new BaseResponse();
String result = mtBiz.login(map);
baseResponse.setStatus(200);
baseResponse.setMessage(result);
return baseResponse;
}
}
package com.xxfc.platform.im.utils;
public interface Callback {
void execute(Object obj);
}
\ No newline at end of file
package com.xxfc.platform.im.utils;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ThreadUtil {
public static final ScheduledExecutorService mThreadPool = Executors.newScheduledThreadPool(Runtime.getRuntime().availableProcessors()*2);
/**
* @Description: TODO(立即执行 线程)
* @param @param callback 参数
*/
public static void executeInThread(Callback callback){
mThreadPool.execute(new Runnable() {
@Override
public void run() {
callback.execute(Thread.currentThread().getName());
}
});
}
public static void executeInThread(Callback callback,Object obj){
mThreadPool.execute(new Runnable() {
@Override
public void run() {
callback.execute(obj);
}
});
}
/**
* @Description: TODO(延时执行线程)
* @param @param callback 延时 秒钟
*/
public static void executeInThread(Callback callback,long delay){
mThreadPool.schedule(new Runnable() {
@Override
public void run() {
callback.execute(Thread.currentThread().getName());
}
}, delay, TimeUnit.SECONDS);
}
}
package com.xxfc.platform.im.utils;
public class ValueUtil {
public static Integer parse(Integer value) {
return null == value ? 0 : value;
}
public static Long parse(Long value) {
return null == value ? 0 : value;
}
public static String parse(String value) {
return null == value || "".equals(value.trim()) ? "" : value;
}
}
#spring:
# application:
# name: vehicle
# cloud:
# nacos:
# config:
# server-addr: 127.0.0.1:8848
# file-extension: yaml
# profiles:
# active: dev
spring:
profiles:
active: dev
application:
name: xx-im
cloud:
nacos:
config:
file-extension: yaml
---
spring:
profiles: dev
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
---
spring:
profiles: pro
cloud:
nacos:
config:
server-addr: 10.5.52.2:8848
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!--<properties resource="dev.properties"/>-->
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<property name="mergeable" value="false"></property>
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
</plugin>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/vehicle?useUnicode=true&amp;characterEncoding=UTF8"
userId="root"
password="xx2019fc">
</jdbcConnection>
<javaModelGenerator targetPackage="${targetModelPackage}" targetProject="${targetJavaProject}"/>
<sqlMapGenerator targetPackage="${targetXMLPackage}" targetProject="${targetResourcesProject}"/>
<javaClientGenerator targetPackage="${targetMapperPackage}" targetProject="${targetJavaProject}"
type="XMLMAPPER"/>
<!-- <table tableName="vehicle" domainObjectName="Vehicle">-->
<!-- </table>-->
<!-- <table tableName="vehicle_book_info" domainObjectName="VehicleBookInfo">-->
<!-- </table>-->
<!-- <table tableName="vehicle_book_record" domainObjectName="VehicleBookRecord">-->
<!-- </table>-->
<!-- <table tableName="branch_company" domainObjectName="BranchCompany">-->
<!-- </table>-->
<!-- <table tableName="branch_company_stock_info" domainObjectName="BranchCompanyStockInfo"></table>-->
<!-- <table tableName="branch_company_stock_apply_info" domainObjectName="BranchCompanyStockApplyInfo"></table>-->
<table tableName="vehicle_upkeep_item" domainObjectName="VehicleUpkeepItem"></table>
<table tableName="vehicle_upkeep_log" domainObjectName="VehicleUpkeepLog"></table>
</context>
</generatorConfiguration>
\ No newline at end of file
......@@ -33,6 +33,9 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
cancelAble.put(OrderTypeEnum.RentVehicle.getCode(), new LinkedList<Integer>(){{
add(OrderStatusEnum.ORDER_UNPAY.getCode());
}});
cancelAble.put(OrderTypeEnum.TOUR.getCode(), new LinkedList<Integer>(){{
add(OrderStatusEnum.ORDER_UNPAY.getCode());
}});
}
public void cancel(BaseOrder baseOrder) {
......
......@@ -20,6 +20,9 @@ public class GoodTagDTO {
//标签id
@ApiModelProperty(value = "标签id")
private Integer tagId;
@ApiModelProperty(value = "标签name")
private String name;
}
......@@ -33,6 +33,30 @@ public class TourDepartVo {
@ApiModelProperty(value = "分公司id")
private String companyId;
/**
* 地址-省/直辖市(编码)
*/
@ApiModelProperty("地址-省/直辖市(编码)")
private Integer province;
/**
* 地址-省/直辖市(名称)
*/
@ApiModelProperty("地址-省/直辖市(名称)")
private Integer provinceName;
/**
* 地址-市(编码)
*/
@ApiModelProperty("地址-市(编码)")
private Integer city;
/**
* 地址-市(名称)
*/
@ApiModelProperty("地址-市(名称)")
private Integer cityName;
//出发时间
@ApiModelProperty(value = "出发时间")
......
......@@ -5,6 +5,8 @@ import java.math.BigDecimal;
import java.util.List;
import com.alibaba.fastjson.JSONObject;
import com.xxfc.platform.tour.dto.GoodBannerDTO;
import com.xxfc.platform.tour.dto.GoodTagDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -69,6 +71,10 @@ public class TourGoodDetailVo {
//状态:0-未发布;1-上架;2-下架
@ApiModelProperty(value = "状态:0-未发布;1-上架;2-下架")
private Integer status;
//天数
@ApiModelProperty(value = "天数")
private Integer number;
//创建时间
@ApiModelProperty(value = "创建时间", hidden = true )
......@@ -106,10 +112,18 @@ public class TourGoodDetailVo {
@ApiModelProperty(value = "出发地点")
private List<TourDepartVo> tourDepartVo;
//商品轮播
@ApiModelProperty(value = "商品轮播")
List<GoodBannerDTO> bannerDTOS;
//目的地
@ApiModelProperty(value = "目的地")
private String destination;
//商品标签
@ApiModelProperty(value = "商品标签")
List<GoodTagDTO> tagDTOS;
......
......@@ -73,6 +73,10 @@ public class TourGoodVo implements Serializable {
//状态:0-未发布;1-上架;2-下架
@ApiModelProperty(value = "状态:0-未发布;1-上架;2-下架")
private Integer status;
//天数
@ApiModelProperty(value = "天数")
private Integer number;
//创建时间
@ApiModelProperty(value = "创建时间", hidden = true )
......
......@@ -195,8 +195,10 @@ public class TourGoodBiz extends BaseBiz<TourGoodMapper, TourGood> {
e.printStackTrace();
return ObjectRestResponse.createFailedResult(ResultCode.EXCEPTION_CODE, "出现异常");
}
return ObjectRestResponse.succ(good);
return ObjectRestResponse.succ();
}
}
package com.xxfc.platform.tour.mapper;
import com.xxfc.platform.tour.dto.GoodBannerDTO;
import com.xxfc.platform.tour.entity.TourGoodBanner;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
* 商品轮播图
*
......@@ -11,5 +15,7 @@ import tk.mybatis.mapper.common.Mapper;
* @date 2019-06-06 11:41:51
*/
public interface TourGoodBannerMapper extends Mapper<TourGoodBanner> {
//查询旅游路线列表
public List<GoodBannerDTO> getBannerList(@Param("goodId")Integer goodId);
}
package com.xxfc.platform.tour.mapper;
import com.xxfc.platform.tour.dto.GoodTagDTO;
import com.xxfc.platform.tour.entity.TourGoodTag;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
* 商品标签表
*
......@@ -11,5 +15,11 @@ import tk.mybatis.mapper.common.Mapper;
* @date 2019-06-06 11:41:51
*/
public interface TourGoodTagMapper extends Mapper<TourGoodTag> {
//查询旅游标签
public List<GoodTagDTO> getGoodTagList(@Param("goodId") Integer goodId);
}
......@@ -16,4 +16,8 @@
<result property="isDel" column="is_del"/>
</resultMap>
<select id="getBannerList" resultType="com.xxfc.platform.tour.dto.GoodBannerDTO">
select * FROM tour_good_banner where good_id=#{goodId} and is_del=0
</select>
</mapper>
\ No newline at end of file
......@@ -80,13 +80,13 @@
</select>
<!--后台查询旅游路线列表-->
<select id="findGoodList" resultMap="tourGoodMap">
<select id="findGoodList" resultMap="tourGoodVoMap">
SELECT g.*,REPLACE(GROUP_CONCAT( DISTINCT t.`name`),',','|')as tagNames from tour_good g
LEFT JOIN tour_good_tag tag ON g.id=tag.good_id
LEFT JOIN tour_tag t ON tag.tag_id=t.id
<where>
<if test="params.query != null and params.query != ''">
and (g.`name` like CONCAT('%',#{params.query},'%') or g.introduce like CONCAT('%',#{params.query},'%'))
<if test="params.name != null and params.name != ''">
and (g.`name` like CONCAT('%',#{params.name},'%') or g.introduce like CONCAT('%',#{params.name},'%'))
</if>
<if test="params.tagId != null and params.tagId != '' ">
and g.id in (SELECT good_id from tour_good_tag
......
......@@ -26,6 +26,10 @@
<result property="name" column="name"/>
<result property="address" column="address"/>
<result property="companyId" column="company_id"/>
<result property="province" column="province"/>
<result property="provinceName" column="province_name"/>
<result property="city" column="city"/>
<result property="cityName" column="city_name"/>
<result property="departTime" column="depart_time"/>
<result property="longitude" column="longitude"/>
<result property="latitude" column="latitude"/>
......
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