Compare commits

...

8 Commits

Author SHA1 Message Date
张博 faa5b8553a 话机接口开发 2024-11-20 15:24:09 +08:00
张博 edc9e08711 从青桔获取设备组及设备列表 2024-11-19 14:13:41 +08:00
张博 a7f61664f2 智慧校园获取青桔token 2024-11-18 19:10:50 +08:00
张博 0a9d610537 智慧校园获取青桔token 2024-11-18 18:03:31 +08:00
张博 fd2ccd530f 智慧校园获取青桔token 2024-11-18 17:28:09 +08:00
张博 4ad55b92a4 智慧校园联系人管理 2024-11-18 17:03:34 +08:00
张博 82d00f1c5b 智慧校园话务模块 2024-11-18 15:24:21 +08:00
张博 3001e20b0d 智慧校园话务模块 2024-11-18 13:52:28 +08:00
42 changed files with 617 additions and 324 deletions

View File

@ -157,17 +157,17 @@
<dependency>
<groupId>com.guwan</groupId>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>4.0.3</version>
</dependency>
<dependency>
<!--<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>1.1.2-beta5</version>
</dependency>
</dependency>-->
<dependency>

View File

@ -27,7 +27,6 @@ public class MybatisPlusConfig {
}
/**
* 分表插件
*/
@ -40,7 +39,7 @@ public class MybatisPlusConfig {
DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor();
dynamicTableNameInnerInterceptor.setTableNameHandler(
//可以传多个表名参数指定哪些表使用MonthTableNameHandler处理表名称
new CustomizeTableNameHandler("ten_person_extract,mobile_device,mobile_package_order,mobile_call_logs")
new CustomizeTableNameHandler("ten_person_extract","mobile_device","mobile_package_order","mobile_call_logs","mobile_contact")
);
//以拦截器的方式处理表名称

View File

@ -10,7 +10,7 @@ import java.util.List;
*/
public class CustomizeTableNameHandler implements TableNameHandler {
//用于记录哪些表可以使用该月份动态表名处理器即哪些表可以分表
private List<String> tableNames;
private final List<String> tableNames;
//构造函数构造动态表名处理器的时候传递tableNames参数
public CustomizeTableNameHandler(String ...tableNames) {
@ -39,4 +39,5 @@ public class CustomizeTableNameHandler implements TableNameHandler {
return tableName; //表名原样返回
}
}
}

View File

@ -1,8 +1,8 @@
package net.shapelight.common.utils;
import com.guwan.excel.EasyExcel;
import com.guwan.excel.converters.longconverter.LongStringConverter;
import com.guwan.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.converters.longconverter.LongStringConverter;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;

View File

@ -26,13 +26,12 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.shapelight.modules.ten.entity.*;
import net.shapelight.modules.ten.service.*;
import net.shapelight.modules.fegin.OpFeignClient;
import net.shapelight.modules.fegin.client.OpFeignClient;
import net.shapelight.modules.vo.TenCelldeptWeVo;
import net.shapelight.modules.vo.TenDeviceVo;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

View File

@ -21,12 +21,11 @@ import net.shapelight.modules.sys.service.SysDeviceAppService;
import net.shapelight.modules.sys.service.SysUserService;
import net.shapelight.modules.ten.entity.*;
import net.shapelight.modules.ten.service.*;
import net.shapelight.modules.fegin.OpFeignClient;
import net.shapelight.modules.fegin.client.OpFeignClient;
import net.shapelight.modules.vo.SchoolNameVo;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

View File

@ -9,7 +9,7 @@ import net.shapelight.common.utils.IpUtils;
import net.shapelight.common.utils.SnowflakeIdWorker;
import net.shapelight.modules.app.annotation.Login;
import net.shapelight.modules.app.annotation.LoginUser;
import net.shapelight.modules.fegin.OpFeignClient;
import net.shapelight.modules.fegin.client.OpFeignClient;
import net.shapelight.modules.mobile.entity.MobilePackage;
import net.shapelight.modules.mobile.entity.MobilePackageOrder;
import net.shapelight.modules.mobile.service.MobilePackageOrderService;
@ -40,7 +40,7 @@ public class AppParentWxController {
MobilePackageService packageService;
@Autowired
GlobalValue globalValue;
@Qualifier("net.shapelight.modules.fegin.OpFeignClient")
@Qualifier("net.shapelight.modules.fegin.client.OpFeignClient")
@Autowired
private OpFeignClient opFeignClient;

View File

@ -1,13 +1,12 @@
package net.shapelight.modules.excel.model;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.metadata.BaseRowModel;
import lombok.Data;
import java.io.Serializable;
@Data
public class PersonModel extends BaseRowModel implements Serializable {
public class PersonModel implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;

View File

@ -2,6 +2,7 @@ package net.shapelight.modules.fegin;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import net.shapelight.modules.fegin.client.OpFeignClient;
import net.shapelight.modules.job.entity.KeysEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@ -17,7 +18,7 @@ import java.util.Map;
@Component
@Slf4j
public class DataSync {
/*@Autowired
@Autowired
OpFeignClient opFeignClient;
@Value("${global.qingju.accountNumber}")
public String accountNumber;
@ -34,5 +35,5 @@ public class DataSync {
KeysEntity.passKey = json.getString("passKey");
KeysEntity.empowerText = json.getString("empowerText");
}
}*/
}
}

View File

@ -1,74 +0,0 @@
package net.shapelight.modules.fegin;
import com.alibaba.fastjson.JSONObject;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
public class OpHystrix implements FallbackFactory<OpFeignClient> {
@Override
public OpFeignClient create(Throwable throwable) {
return new OpFeignClient() {
@Override
public JSONObject empower(Map<String, Object> params) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("errormsg","获取密钥失败");
return jsonObject;
}
@Override
public JSONObject submitData(Map<String, Object> params) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("errormsg",params.get("operation")+"失败");
return jsonObject;
}
@Override
public JSONObject getToken(Map<String, Object> params) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("errorMessage","token获取失败");
return jsonObject;
}
@Override
public JSONObject createIotGroupId(Map<String, Object> params) {
return null;
}
@Override
public JSONObject removeIotGroupDevice(Map<String, Object> params) {
return null;
}
@Override
public JSONObject addIotGroupDevice(Map<String, Object> params) {
return null;
}
@Override
public JSONObject getIotGroupInfo(Map<String, Object> params) {
return null;
}
@Override
public JSONObject activeLicenseDevice(Map<String, Object> params) {
return null;
}
@Override
public JSONObject getLicenseDeviceInfo(Map<String, Object> params) {
return null;
}
@Override
public JSONObject createOrder(Map<String, Object> params) {
return null;
}
};
}
}

View File

@ -0,0 +1,37 @@
package net.shapelight.modules.fegin.client;
import com.alibaba.fastjson.JSONObject;
import net.shapelight.modules.fegin.hystrix.OpHystrix;
import net.shapelight.modules.fegin.config.OpFeignConfig;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.PostConstruct;
import java.util.Map;
/*
* name 指定调用rest接口对应服务名
* path 指定调用接口所在Controller的@RequestMapping对应路径没有则不填
* 青桔话务平台
*/
@FeignClient(name = "operator-service", url = "${global.qingju.url}",configuration = OpFeignConfig.class,fallbackFactory = OpHystrix.class)
@Component
public interface OpFeignClient {
/**
* 获取密钥 1800s
* @return
*/
@PostConstruct
@PostMapping("/empower")
JSONObject empower(@RequestBody Map<String,Object> params);
@PostMapping("/submitData")
JSONObject submitData(@RequestBody Map<String,Object> params);
@PostMapping("/getData")
JSONObject getData(@RequestBody Map<String,Object> params);
}

View File

@ -1,4 +1,4 @@
package net.shapelight.modules.fegin;
package net.shapelight.modules.fegin.client;
import com.alibaba.fastjson.JSONObject;
import net.shapelight.modules.fegin.config.OpFeignConfig;
@ -9,7 +9,6 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import javax.annotation.PostConstruct;
import java.util.Map;
/*
@ -19,19 +18,7 @@ import java.util.Map;
*/
@FeignClient(name = "operator-service", url = "${global.wx.url}",configuration = OpFeignConfig.class)
@Component
public interface OpFeignClient {
/**
* 获取密钥 1800s
* @return
*/
@PostConstruct
@PostMapping("/empower")
JSONObject empower(@RequestBody Map<String,Object> params);
@PostMapping("/submitData")
JSONObject submitData(@RequestBody Map<String,Object> params);
public interface WxFeignClient {
/*
获取token
*/

View File

@ -2,7 +2,7 @@ package net.shapelight.modules.fegin.config;
import feign.Logger;
import feign.Request;
import net.shapelight.modules.fegin.OpFeignInterceptor;
import net.shapelight.modules.fegin.interceptor.OpFeignInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

View File

@ -0,0 +1,38 @@
package net.shapelight.modules.fegin.hystrix;
import com.alibaba.fastjson.JSONObject;
import feign.hystrix.FallbackFactory;
import net.shapelight.modules.fegin.client.OpFeignClient;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
public class OpHystrix implements FallbackFactory<OpFeignClient> {
@Override
public OpFeignClient create(Throwable throwable) {
return new OpFeignClient() {
@Override
public JSONObject empower(Map<String, Object> params) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("errormsg","获取密钥失败");
return jsonObject;
}
@Override
public JSONObject submitData(Map<String, Object> params) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("errormsg",params.get("operation")+"失败");
return jsonObject;
}
@Override
public JSONObject getData(Map<String, Object> params) {
return null;
}
};
}
}

View File

@ -1,4 +1,4 @@
package net.shapelight.modules.fegin;
package net.shapelight.modules.fegin.interceptor;
import feign.RequestInterceptor;
import feign.RequestTemplate;
@ -14,8 +14,8 @@ public class OpFeignInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
requestTemplate.header("access_token", redisUtils.get("wxToken").toString());
//requestTemplate.header("empowerText", KeysEntity.empowerText);
//requestTemplate.header("access_token", redisUtils.get("wxToken").toString());
requestTemplate.header("empowerText", KeysEntity.empowerText);
log.info("feign拦截器");
}
}

View File

@ -3,7 +3,7 @@ package net.shapelight.modules.job.task;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import net.shapelight.modules.job.entity.KeysEntity;
import net.shapelight.modules.fegin.OpFeignClient;
import net.shapelight.modules.fegin.client.OpFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

View File

@ -0,0 +1,99 @@
package net.shapelight.modules.job.task;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import net.shapelight.common.handler.CustomizeTableNameHandler;
import net.shapelight.modules.fegin.client.OpFeignClient;
import net.shapelight.modules.job.entity.KeysEntity;
import net.shapelight.modules.mobile.entity.MobileDevice;
import net.shapelight.modules.mobile.entity.MobileDeviceGroup;
import net.shapelight.modules.mobile.service.MobileDeviceGroupService;
import net.shapelight.modules.mobile.service.MobileDeviceService;
import net.shapelight.modules.sys.controller.AbstractController;
import net.shapelight.modules.ten.entity.TenUserScopeEntity;
import net.shapelight.modules.ten.service.impl.TenUserScopeServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
public class TerminalListSyncTask extends AbstractController implements ITask {
@Autowired
private OpFeignClient feignClient;
@Autowired
private MobileDeviceGroupService mobileDeviceGroupService;
@Autowired
private MobileDeviceService mobileDeviceService;
@Value("${global.qingju.accountNumber}")
String accountNumber;
@Value("${global.qingju.empowerKey}")
String empowerKey;
@Autowired
private TenUserScopeServiceImpl tenUserScopeService;
@Override
public void run(String params) throws Exception {
syncTerminal();
syncTerminalGroup();
}
public void syncTerminalGroup() throws Exception {
Map<String, Object> params = new HashMap<String, Object>();
params.put("accountNumber", accountNumber);
params.put("empowerKey", empowerKey);
params.put("operation", "ghTerminalGroupGetList");
params.put("passKey", KeysEntity.passKey);
Map<String, Object> queryParams = feignClient.getData(params);
queryParams.put("otherSchoolCode", "xtzg");
params.put("queryParams",queryParams);
JSONObject jsonObject = feignClient.getData(params);
TenUserScopeEntity tenUserScopeEntity = tenUserScopeService.getOne(new LambdaQueryWrapper<TenUserScopeEntity>()
.eq(TenUserScopeEntity::getUserId,getUserId()));
if(jsonObject.getString("shrgStatus").equals("S")) {
List<JSONObject> list = jsonObject.getJSONArray("list").toJavaList(JSONObject.class);
list.forEach(item -> {
MobileDeviceGroup mdg = new MobileDeviceGroup();
mdg.setOpenId(item.getString("terminalGroupUuid"));
mdg.setGroupName(item.getString("terminalGroupName"));
mdg.setDeviceCount(item.getInteger("terminalCount"));
mobileDeviceGroupService.save(mdg);
});
}
}
public void syncTerminal() throws Exception {
Map<String, Object> params = new HashMap<String, Object>();
params.put("accountNumber", accountNumber);
params.put("empowerKey", empowerKey);
params.put("operation", "ghTerminalGetList");
params.put("passKey", KeysEntity.passKey);
Map<String, Object> queryParams = feignClient.getData(params);
queryParams.put("otherSchoolCode", "xtzg");
//params.put("queryParams",queryParams);
JSONObject jsonObject = feignClient.getData(params);
TenUserScopeEntity tenUserScopeEntity = tenUserScopeService.getOne(new LambdaQueryWrapper<TenUserScopeEntity>()
.eq(TenUserScopeEntity::getUserId,getUserId()));
if(jsonObject.getString("shrgStatus").equals("S")) {
List<JSONObject> list = jsonObject.getJSONArray("list").toJavaList(JSONObject.class);
CustomizeTableNameHandler.setData(tenUserScopeEntity.getTenantId().toString());
list.forEach(item -> {
MobileDevice mobileDevice = new MobileDevice();
mobileDevice.setOpenId(item.getString("terminalGroupUuid"));
mobileDevice.setName(item.getString("terminalName"));
mobileDevice.setSn(item.getString("terminalSn"));
mobileDevice.setKey(item.getString("key"));
mobileDevice.setGroupName(item.getString("terminalGroupName"));
//mobileDevice.setGroupId(item.getString(""))
mobileDeviceService.save(mobileDevice);
});
CustomizeTableNameHandler.removeData();
}
}
}

View File

@ -0,0 +1,23 @@
package net.shapelight.modules.mobile.controler;
import io.swagger.annotations.Api;
import net.shapelight.common.utils.R;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
@RequestMapping("ghAppController")
@Api(value = "设备接口",tags = "设备接口")
public class DeviceClientController {
public R getData(@RequestBody Map<String,Object> params) {
return R.ok().put("data", params.get("data"));
}
}

View File

@ -1,33 +1,46 @@
package net.shapelight.modules.mobile.controler;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import net.shapelight.common.handler.CustomizeTableNameHandler;
import net.shapelight.common.utils.PageUtils;
import net.shapelight.common.utils.R;
import net.shapelight.common.utils.SnowflakeIdWorker;
import net.shapelight.modules.fegin.client.OpFeignClient;
import net.shapelight.modules.job.entity.KeysEntity;
import net.shapelight.modules.mobile.dto.mobileDevice.MobileDeviceAddDto;
import net.shapelight.modules.mobile.dto.mobileDevice.MobileDeviceQueryDto;
import net.shapelight.modules.mobile.entity.MobileDevice;
import net.shapelight.modules.mobile.service.MobileDeviceService;
import net.shapelight.modules.sys.controller.AbstractController;
import org.apache.ibatis.annotations.Delete;
import net.shapelight.modules.ten.entity.TenUserScopeEntity;
import net.shapelight.modules.ten.service.impl.TenUserScopeServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("mobile/device/")
@Api("话机设备管理")
@Api(value="话务设备管理",tags="话务设备管理")
public class DeviceController extends AbstractController {
@Autowired
MobileDeviceService mobileDeviceService;
@Autowired
private OpFeignClient feignClient;
@Value("${global.qingju.accountNumber}")
String accountNumber;
@Value("${global.qingju.empowerKey}")
String empowerKey;
@Autowired
private TenUserScopeServiceImpl tenUserScopeService;
@GetMapping("list")
@ -58,8 +71,26 @@ public class DeviceController extends AbstractController {
mobileDeviceQueryDto.setName(name);
mobileDeviceQueryDto.setGroupId(groupId);
mobileDeviceQueryDto.setApkVersion(apkVersion);
Map<String, Object> params = new HashMap<String, Object>();
params.put("accountNumber", accountNumber);
params.put("empowerText", KeysEntity.empowerText);
params.put("operation", "ghTerminalGroupGetList");
params.put("passKey", KeysEntity.passKey);
Map<String, Object> queryParams = new HashMap<>();
TenUserScopeEntity tenUserScopeEntity = tenUserScopeService.getOne(new LambdaQueryWrapper<TenUserScopeEntity>().eq(TenUserScopeEntity::getUserId,getUserId()));
queryParams.put("otherSchoolCode", tenUserScopeEntity.getCellId().toString());
params.put("queryParams",queryParams);
JSONObject jsonObject = feignClient.getData(params);
if(jsonObject.getString("shrgStatus").equals("S")) {
JSONArray list = jsonObject.getJSONArray("list");
int totalSize = list.size();
long start = (page-1) * size;
long end = Math.min((page) * size, totalSize);
return R.ok().put("data",list.subList(Math.toIntExact(start), Math.toIntExact(end)));
}
return R.ok().put("data", mobileDeviceService.list(mobileDeviceQueryDto));
//return R.ok().put("data", mobileDeviceService.list(mobileDeviceQueryDto));
return R.error().put("data","获取公话组失败");
}
@PostMapping("add")

View File

@ -1,34 +1,51 @@
package net.shapelight.modules.mobile.controler;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import net.shapelight.common.utils.BeanUtils;
//import net.shapelight.common.utils.ExcelUtils;
import net.shapelight.common.utils.ExcelUtils;
import net.shapelight.common.utils.R;
import net.shapelight.modules.fegin.client.OpFeignClient;
import net.shapelight.modules.job.entity.KeysEntity;
import net.shapelight.modules.mobile.dto.mobileDeviceGroup.MobileDeviceGruopQueryDto;
import net.shapelight.modules.mobile.dto.mobileDeviceGroup.MobileDeviceGroupAddDto;
import net.shapelight.modules.mobile.service.MobileDeviceGroupService;
import net.shapelight.modules.mobile.vo.mobileDeviceGroup.MobileDeviceGroupVo;
import net.shapelight.modules.sys.controller.AbstractController;
import net.shapelight.modules.ten.entity.TenUserScopeEntity;
import net.shapelight.modules.ten.service.impl.TenUserScopeServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.*;
@RestController
@RequestMapping("mobile/device/group/")
@Api("话机设备组管理")
@Api(value = "话机设备组管理",tags = "话机设备组管理")
@RequiredArgsConstructor
public class DeviceGroupController {
public class DeviceGroupController extends AbstractController {
private final MobileDeviceGroupService mobileDeviceGroupService;
@Autowired
private OpFeignClient feignClient;
@Value("${global.qingju.accountNumber}")
String accountNumber;
@Value("${global.qingju.empowerKey}")
String empowerKey;
@Autowired
private TenUserScopeServiceImpl tenUserScopeService;
@GetMapping("list")
@ApiOperation("话机设备组列表")
@ApiImplicitParams({
@ -48,7 +65,30 @@ public class DeviceGroupController {
mobileDeviceGruopQueryDto.setGroupId(groupId);
mobileDeviceGruopQueryDto.setStatus(status);
return R.ok().put("data", mobileDeviceGroupService.list(mobileDeviceGruopQueryDto));
Map<String, Object> params = new HashMap<String, Object>();
params.put("accountNumber", accountNumber);
params.put("empowerText", KeysEntity.empowerText);
params.put("operation", "ghTerminalGetList");
params.put("passKey", KeysEntity.passKey);
Map<String, Object> queryParams = new HashMap<>();
TenUserScopeEntity tenUserScopeEntity = tenUserScopeService.getOne(new LambdaQueryWrapper<TenUserScopeEntity>().eq(TenUserScopeEntity::getUserId,getUserId()));
queryParams.put("otherSchoolCode", tenUserScopeEntity.getCellId().toString());
params.put("queryParams",queryParams);
queryParams.put("otherSchoolCode", tenUserScopeEntity.getCellId().toString());
params.put("queryParams",queryParams);
JSONObject jsonObject = feignClient.getData(params);
if(jsonObject.getString("shrgStatus").equals("S")) {
JSONArray list = jsonObject.getJSONArray("list");
int totalSize = list.size();
long start = (page-1) * size;
long end = Math.min(page * size, totalSize);
return R.ok().put("data",list.subList(Math.toIntExact(start), Math.toIntExact(end)));
}
//return R.ok().put("data", mobileDeviceService.list(mobileDeviceQueryDto));
return R.error().put("data","获取话机列表失败");
//return R.ok().put("data", mobileDeviceGroupService.list(mobileDeviceGruopQueryDto));
}

View File

@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("mobile/package/")
@RequiredArgsConstructor
@Api("公话套餐管理")
@Api(value = "公话套餐管理",tags = "公话套餐管理")
public class MobilePackageController extends AbstractController {

View File

@ -1,11 +1,11 @@
package net.shapelight.modules.mobile.coverter;
import com.guwan.excel.converters.Converter;
import com.guwan.excel.enums.CellDataTypeEnum;
import com.guwan.excel.metadata.GlobalConfiguration;
import com.guwan.excel.metadata.data.WriteCellData;
import com.guwan.excel.metadata.property.ExcelContentProperty;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.util.Optional;

View File

@ -0,0 +1,79 @@
package net.shapelight.modules.mobile.entity;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
/**
*
* @TableName mobile_contact
*/
@TableName("mobile_contact")
@ApiModel("联系人信息")
@Data
public class MobileContact implements Serializable {
/**
* 联系人ID
*/
@NotNull(message="[联系人ID]不能为空")
@ApiModelProperty("联系人ID")
@TableId(type = IdType.ASSIGN_ID)
private Long contactId;
/**
* 联系人称呼
*/
@Size(max= 20,message="编码长度不能超过20")
@ApiModelProperty("联系人称呼")
@Length(max= 20,message="编码长度不能超过20")
private String callName;
/**
* 联系人电话
*/
@Size(max= 20,message="编码长度不能超过20")
@ApiModelProperty("联系人电话")
@Length(max= 20,message="编码长度不能超过20")
private String mobile;
/**
* 学生ID
*/
@ApiModelProperty("学生ID")
private Long personId;
/**
* 排序字段
*/
@ApiModelProperty("排序字段")
private Integer sort;
/**
* 家长ID
*/
@ApiModelProperty("家长ID")
private Long parentId;
/**
* 绑定状态
*/
@ApiModelProperty("绑定状态")
private Integer bindStatus;
/**
* 是否主联系人
*/
@ApiModelProperty("是否主联系人")
private Integer isMain;
/**
* 绑定时间
*/
@ApiModelProperty("绑定时间")
private Date bindTime;
}

View File

@ -8,6 +8,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
@ -121,5 +122,92 @@ public class MobileDevice implements Serializable {
@TableLogic
private Integer deleteFlag;
/**
* 三方ID
*/
@Size(max= 50,message="编码长度不能超过50")
@ApiModelProperty("三方ID")
@Length(max= 50,message="编码长度不能超过50")
private String openId;
/**
* 心跳频率毫秒
*/
@ApiModelProperty("心跳频率(毫秒)")
private Integer heartbeatFrequency;
/**
* 单次通话时长
*/
@NotNull(message="[单次通话时长]不能为空")
@ApiModelProperty("单次通话时长")
private Integer callTime;
/**
* 开机时间
*/
@ApiModelProperty("开机时间")
private Date timeOn;
/**
* 关机时间
*/
@ApiModelProperty("关机时间")
private Date timeOff;
/**
* 禁拨电话
*/
@Size(max= 255,message="编码长度不能超过255")
@ApiModelProperty("禁拨电话")
@Length(max= 255,message="编码长度不能超过255")
private String forbidPhone;
/**
* 拨号方式all:视频+语音video视频sim语音
*/
@NotBlank(message="[拨号方式all:视频+语音video视频sim语音]不能为空")
@Size(max= 10,message="编码长度不能超过10")
@ApiModelProperty("拨号方式all:视频+语音video视频sim语音")
@Length(max= 10,message="编码长度不能超过10")
private String phoneType;
/**
* 是否显示留言按钮(Y显示N不显示)
*/
@NotBlank(message="[是否显示留言按钮(Y显示N不显示)]不能为空")
@Size(max= 2,message="编码长度不能超过2")
@ApiModelProperty("是否显示留言按钮(Y显示N不显示)")
@Length(max= 2,message="编码长度不能超过2")
private String messageFlag;
/**
* 拔打SOS电话是否要人
脸认证(Y要人脸认证N不要人脸认证)
*/
@NotBlank(message="[拔打SOS电话是否要人 脸认证(Y要人脸认证N不要人脸认证。)]不能为空")
@Size(max= 2,message="编码长度不能超过2")
@ApiModelProperty("拔打SOS电话是否要人 脸认证(Y要人脸认证N不要人脸认证。)")
@Length(max= 2,message="编码长度不能超过2")
private String checkSosPhone;
/**
* 是否显示成绩查询按钮(Y显示N不显示)
*/
@NotBlank(message="[是否显示成绩查询按钮(Y显示N不显示)]不能为空")
@Size(max= 2,message="编码长度不能超过2")
@ApiModelProperty("是否显示成绩查询按钮(Y显示N不显示)")
@Length(max= 2,message="编码长度不能超过2")
private String achievementFlag;
/**
* 预警通话时长
*/
@NotNull(message="[预警通话时长]不能为空")
@ApiModelProperty("预警通话时长")
private Integer warningCallTime;
/**
* 是否显示请假按钮(Y显示N不显示)
*/
@NotBlank(message="[是否显示请假按钮(Y显示N不显示)]不能为空")
@Size(max= 2,message="编码长度不能超过2")
@ApiModelProperty("是否显示请假按钮(Y显示N不显示)")
@Length(max= 2,message="编码长度不能超过2")
private String userLeaveFlag;
private String key;
private String groupName;
}

View File

@ -8,6 +8,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.Id;
import java.io.Serializable;
import java.util.Date;
@ -24,7 +25,7 @@ public class MobileDeviceGroup implements Serializable {
/**
* 设备组id
*/
@TableId
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(name = "设备组ID")
private Long groupId;
@ -98,4 +99,6 @@ public class MobileDeviceGroup implements Serializable {
@TableLogic
private Integer deleteFlag;
private String openId;
}

View File

@ -86,173 +86,4 @@ public class MobilePackageOrder implements Serializable {
@ApiModelProperty("到期时间")
private Date expireTime;
/**
* 订单ID
*/
private void setOrderId(Long orderId){
this.orderId = orderId;
}
/**
* 学生ID
*/
private void setPersonId(Long personId){
this.personId = personId;
}
/**
* 套餐ID
*/
private void setPackageId(Long packageId){
this.packageId = packageId;
}
/**
* 支付金额
*/
private void setPayment(BigDecimal payment){
this.payment = payment;
}
/**
* 付款时间
*/
private void setPayTime(Date payTime){
this.payTime = payTime;
}
/**
* 支付状态(1已支付0未支付)
*/
private void setPayStatus(Integer payStatus){
this.payStatus = payStatus;
}
/**
* 生效时间
*/
private void setEffectiveDate(Date effectiveDate){
this.effectiveDate = effectiveDate;
}
/**
* 剩余时长
*/
private void setRemainderTime(Integer remainderTime){
this.remainderTime = remainderTime;
}
/**
* 剩余次数
*/
private void setRemainderCount(Integer remainderCount){
this.remainderCount = remainderCount;
}
/**
* 生效状态
*/
private void setStatus(Integer status){
this.status = status;
}
/**
* 学生姓名
*/
private void setPersonName(String personName){
this.personName = personName;
}
/**
* 到期时间
*/
private void setExpireTime(Date expireTime){
this.expireTime = expireTime;
}
/**
* 订单ID
*/
private Long getOrderId(){
return this.orderId;
}
/**
* 学生ID
*/
private Long getPersonId(){
return this.personId;
}
/**
* 套餐ID
*/
private Long getPackageId(){
return this.packageId;
}
/**
* 支付金额
*/
private BigDecimal getPayment(){
return this.payment;
}
/**
* 付款时间
*/
private Date getPayTime(){
return this.payTime;
}
/**
* 支付状态(1已支付0未支付)
*/
private Integer getPayStatus(){
return this.payStatus;
}
/**
* 生效时间
*/
private Date getEffectiveDate(){
return this.effectiveDate;
}
/**
* 剩余时长
*/
private Integer getRemainderTime(){
return this.remainderTime;
}
/**
* 剩余次数
*/
private Integer getRemainderCount(){
return this.remainderCount;
}
/**
* 生效状态
*/
private Integer getStatus(){
return this.status;
}
/**
* 学生姓名
*/
private String getPersonName(){
return this.personName;
}
/**
* 到期时间
*/
private Date getExpireTime(){
return this.expireTime;
}
}

View File

@ -0,0 +1,20 @@
package net.shapelight.modules.mobile.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.shapelight.modules.mobile.entity.MobileContact;
import org.apache.ibatis.annotations.Mapper;
/**
* @author zhangbo
* @description 针对表mobile_contact的数据库操作Mapper
* @createDate 2024-11-18 16:03:51
* @Entity net.shapelight.modules.mobile.MobileContact
*/
@Mapper
public interface MobileContactMapper extends BaseMapper<MobileContact> {
}

View File

@ -0,0 +1,13 @@
package net.shapelight.modules.mobile.service;
import com.baomidou.mybatisplus.extension.service.IService;
import net.shapelight.modules.mobile.entity.MobileContact;
/**
* @author zhangbo
* @description 针对表mobile_contact的数据库操作Service
* @createDate 2024-11-18 13:29:24
*/
public interface MobileContactService extends IService<MobileContact> {
}

View File

@ -0,0 +1,22 @@
package net.shapelight.modules.mobile.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.shapelight.modules.mobile.entity.MobileContact;
import net.shapelight.modules.mobile.service.MobileContactService;
import net.shapelight.modules.mobile.mapper.MobileContactMapper;
import org.springframework.stereotype.Service;
/**
* @author zhangbo
* @description 针对表mobile_contact的数据库操作Service实现
* @createDate 2024-11-18 13:29:24
*/
@Service
public class MobileContactServiceImpl extends ServiceImpl<MobileContactMapper, MobileContact>
implements MobileContactService{
}

View File

@ -1,6 +1,6 @@
package net.shapelight.modules.mobile.vo.mobileDeviceGroup;
import com.guwan.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;

View File

@ -16,10 +16,9 @@ import net.shapelight.modules.ten.entity.TenUserScopeEntity;
import net.shapelight.modules.ten.service.TenCellService;
import net.shapelight.modules.ten.service.TenPersonService;
import net.shapelight.modules.ten.service.TenUserScopeService;
import net.shapelight.modules.fegin.OpFeignClient;
import net.shapelight.modules.fegin.client.OpFeignClient;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

View File

@ -17,11 +17,10 @@ import net.shapelight.modules.ten.entity.TenParent;
import net.shapelight.modules.ten.entity.TenRelation;
import net.shapelight.modules.ten.service.TenParentService;
import net.shapelight.modules.ten.service.TenRelationService;
import net.shapelight.modules.fegin.OpFeignClient;
import net.shapelight.modules.fegin.client.OpFeignClient;
import net.shapelight.modules.vo.ParentVo;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

View File

@ -17,6 +17,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import net.shapelight.common.config.GlobalValue;
import net.shapelight.common.config.MinioConfig;
import net.shapelight.common.handler.CustomizeTableNameHandler;
import net.shapelight.common.utils.*;
import net.shapelight.commons.engine.sdk.PalmSDK;
import net.shapelight.commons.engine.sdk.SdkImageUtils;
@ -27,6 +28,8 @@ import net.shapelight.modules.app.entity.AppUserScopeEntity;
import net.shapelight.modules.app.service.AppUserService;
import net.shapelight.modules.app.service.impl.AppUserScopeServiceImpl;
import net.shapelight.modules.excel.model.PersonModel;
import net.shapelight.modules.mobile.entity.MobileContact;
import net.shapelight.modules.mobile.service.impl.MobileContactServiceImpl;
import net.shapelight.modules.nettyapi.service.ServerApiService;
import net.shapelight.modules.sys.controller.AbstractController;
import net.shapelight.modules.sys.entity.SysUserEntity;
@ -35,13 +38,12 @@ import net.shapelight.modules.sys.service.SysUserService;
import net.shapelight.modules.sys.service.impl.SysDictServiceImpl;
import net.shapelight.modules.ten.entity.*;
import net.shapelight.modules.ten.service.*;
import net.shapelight.modules.fegin.OpFeignClient;
import net.shapelight.modules.fegin.client.OpFeignClient;
import net.shapelight.modules.vo.TenDeviceVo;
import net.shapelight.modules.vo.TenPersonOperationVo;
import org.apache.commons.io.FilenameUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@ -105,6 +107,8 @@ public class TenPersonController extends AbstractController {
private AppUserScopeServiceImpl appUserScopeService;
@Autowired
private TenRelationService relationService;
@Autowired
private MobileContactServiceImpl mobileContactServiceImpl;
/**
@ -327,7 +331,10 @@ public class TenPersonController extends AbstractController {
person.setDeptAllName(deptAllName);
}
}
CustomizeTableNameHandler.setData(String.valueOf(person.getCellId()));
List<MobileContact> list = mobileContactServiceImpl.list(new LambdaQueryWrapper<MobileContact>().eq(MobileContact::getPersonId,person.getPersonId()));
CustomizeTableNameHandler.removeData();
person.setMobileContactList(list);
return R.ok().put("data", person);
}
@ -339,6 +346,12 @@ public class TenPersonController extends AbstractController {
@ApiOperation(value = "查询户室内所有成员", response = TenPersonEntity.class)
public R findByRoomId(@PathVariable("roomId") Long personId, @PathVariable("cellId") Long cellId) {
List<TenPersonEntity> person = tenPersonService.getByRoomId(personId, cellId, null);
person.forEach(item -> {
CustomizeTableNameHandler.setData(String.valueOf(item.getCellId()));
List<MobileContact> list = mobileContactServiceImpl.list(new LambdaQueryWrapper<MobileContact>().eq(MobileContact::getPersonId,item.getPersonId()));
item.setMobileContactList(list);
CustomizeTableNameHandler.setData(String.valueOf(item.getCellId()));
});
return R.ok().put("data", person);
}

View File

@ -13,9 +13,8 @@ import net.shapelight.modules.ten.entity.TenUserScopeEntity;
import net.shapelight.modules.ten.service.TenParentService;
import net.shapelight.modules.ten.service.TenRelationService;
import net.shapelight.modules.ten.service.TenUserScopeService;
import net.shapelight.modules.fegin.OpFeignClient;
import net.shapelight.modules.fegin.client.OpFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.*;
import java.util.*;

View File

@ -16,11 +16,10 @@ import net.shapelight.modules.sys.entity.SysUserEntity;
import net.shapelight.modules.sys.service.SysUserRoleService;
import net.shapelight.modules.ten.entity.*;
import net.shapelight.modules.ten.service.*;
import net.shapelight.modules.fegin.OpFeignClient;
import net.shapelight.modules.fegin.client.OpFeignClient;
import net.shapelight.modules.vo.TenPersonOperationVo;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

View File

@ -16,6 +16,7 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.shapelight.common.base.BaseEntity;
import net.shapelight.modules.mobile.entity.MobileContact;
/**
* 人员表
@ -368,4 +369,8 @@ public class TenPersonEntity extends BaseEntity implements Serializable {
private String pvRight;
private Integer featureType;
@TableField(exist = false)
@ApiModelProperty("联系人信息")
private List<MobileContact> mobileContactList;
}

View File

@ -2,7 +2,6 @@ package net.shapelight.modules.ten.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.metadata.Sheet;
import com.arcsoft.face.FaceInfo;
import com.arcsoft.face.enums.ExtractType;
import com.arcsoft.face.toolkit.ImageFactory;
@ -26,17 +25,18 @@ import net.shapelight.modules.excel.listener.PersonExcelListener;
import net.shapelight.modules.excel.model.PersonModel;
import net.shapelight.modules.face.dto.FaceRecognitionResDTO;
import net.shapelight.modules.face.service.FaceEngineService;
import net.shapelight.modules.mobile.entity.MobileContact;
import net.shapelight.modules.mobile.service.MobileContactService;
import net.shapelight.modules.nettyapi.service.ServerApiService;
import net.shapelight.modules.sys.entity.SysDictEntity;
import net.shapelight.modules.sys.service.impl.SysDictServiceImpl;
import net.shapelight.modules.ten.dao.TenRelationMapper;
import net.shapelight.modules.ten.entity.*;
import net.shapelight.modules.ten.service.*;
import net.shapelight.modules.fegin.OpFeignClient;
import net.shapelight.modules.fegin.client.OpFeignClient;
import net.shapelight.modules.vo.*;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
@ -107,6 +107,8 @@ public class TenPersonServiceImpl implements TenPersonService {
private FaceEngineService faceEngineService;
@Autowired
private TenRelationMapper tenRelationMapper;
@Autowired
private MobileContactService mobileContactService;
@Override
@ -158,6 +160,9 @@ public class TenPersonServiceImpl implements TenPersonService {
new QueryWrapper<TenPersonExtractEntity>()
.eq("person_id", personEntity.getPersonId())
);
List<MobileContact> mobileContacts = mobileContactService.list(new LambdaQueryWrapper<MobileContact>().eq(MobileContact::getPersonId,personEntity.getPersonId()));
CustomizeTableNameHandler.removeData();
personEntity.setMobileContactList(mobileContacts);
if (extracts != null) {
personEntity.setExtractCount(extracts.size());
personEntity.setExtractList(extracts);
@ -174,7 +179,6 @@ public class TenPersonServiceImpl implements TenPersonService {
personEntity.setDeptAllName(deptAllName);
}
}
CustomizeTableNameHandler.removeData();
}
return new PageUtils(page);
}
@ -467,6 +471,14 @@ public class TenPersonServiceImpl implements TenPersonService {
appUser.setCurrentScopeId(appScope.getUserScopeId());
appUserService.updateById(appUser);
}
if (entity.getPersonType().equals(Constant.PERSON_TYPE_OWNER)) {
CustomizeTableNameHandler.setData(String.valueOf(entity.getCellId()));
entity.getMobileContactList().forEach(item -> {
item.setPersonId(entity.getPersonId());
});
mobileContactService.saveBatch(entity.getMobileContactList());
CustomizeTableNameHandler.removeData();
}
//发送设备通知
List<TenDeviceVo> devList = tenDeviceService.findByCellId(entity.getCellId());
@ -1462,6 +1474,14 @@ public class TenPersonServiceImpl implements TenPersonService {
}
tenPersonDao.updateById(entity);
if (entity.getPersonType().equals(Constant.PERSON_TYPE_OWNER)) {
CustomizeTableNameHandler.setData(String.valueOf(entity.getCellId()));
/* entity.getMobileContactList().forEach(item -> {
item.setPersonId(entity.getPersonId());
});*/
mobileContactService.updateBatchById(entity.getMobileContactList());
CustomizeTableNameHandler.removeData();
}
//配置同步数据
List<TenPersonSyncEntity> syncEntitys = tenPersonSyncService.findByPersonId(entity.getPersonId(), entity.getCellId());
for (TenPersonSyncEntity syncEn : syncEntitys) {
@ -1994,7 +2014,7 @@ public class TenPersonServiceImpl implements TenPersonService {
PersonExcelListener listener = new PersonExcelListener(imageFiles, this, this.tenCellDeptService,tenantId);
try {
excelStream = new BufferedInputStream(new FileInputStream(excelFileStr));
EasyExcelFactory.readBySax(excelStream, new Sheet(1, 1, PersonModel.class), listener);
EasyExcelFactory.read(excelStream,PersonModel.class, listener);
excelStream.close();
list.addAll(listener.getList());
} catch (Exception exp) {

View File

@ -5,7 +5,7 @@ import net.shapelight.modules.ten.entity.TenAddressEntity;
import net.shapelight.modules.ten.entity.TenBuildEntity;
import net.shapelight.modules.ten.entity.TenCellEntity;
import net.shapelight.modules.ten.service.*;
import net.shapelight.modules.fegin.OpFeignClient;
import net.shapelight.modules.fegin.client.OpFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;

View File

@ -1,7 +1,6 @@
package net.shapelight.modules.ten.service.impl;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

View File

@ -141,7 +141,8 @@ config:
version: 4.1
app-id: SUQLGn78W5o7StEEbm6WTTfaMgAxSsN8HwJziApVyNN
sdk-key: 7dJ9RqEhc3mPCatuUceKjgYwZXfX83n3QHz4xb6biPiG
active-key: 86L1-11TK-313B-Y8KG
#active-key: 86L1-11TK-313B-Y8KG
active-key: 86L1-11TK-312W-R246
#active-key: 82K1-11TT-K11Y-BHQE
active-file:
detect-pool-size: 16

View File

@ -0,0 +1,24 @@
<?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="net.shapelight.modules.mobile.mapper.MobileContactMapper">
<resultMap id="BaseResultMap" type="net.shapelight.modules.mobile.entity.MobileContact">
<id property="contactId" column="contact_id" jdbcType="BIGINT"/>
<result property="callName" column="call_name" jdbcType="VARCHAR"/>
<result property="mobile" column="mobile" jdbcType="VARCHAR"/>
<result property="personId" column="person_id" jdbcType="BIGINT"/>
<result property="sort" column="sort" jdbcType="INTEGER"/>
<result property="parentId" column="parent_id" jdbcType="BIGINT"/>
<result property="bindStatus" column="bind_status" jdbcType="TINYINT"/>
<result property="isMain" column="is_main" jdbcType="TINYINT"/>
<result property="bindTime" column="bind_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
contact_id,call_name,mobile,
person_id,sort,parent_id,
bind_status,is_main,bind_time
</sql>
</mapper>

View File

@ -88,7 +88,7 @@
</update>
<update id="createMobileDevice" parameterType="String">
create table if not exists `mobile_device_${teantId}` like `mobile_device`;
create table if not exists `mobile_device_${tenantId}` like `mobile_device`;
</update>
<select id="queryList" resultMap="tenCellMap">