新增话务管理

This commit is contained in:
张博 2024-11-14 13:05:57 +08:00
parent 65cc7d4f54
commit 1033950cd6
38 changed files with 1273 additions and 12 deletions

View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import net.shapelight.common.interceptor.CustomizeTableNameHandler; import net.shapelight.common.handler.CustomizeTableNameHandler;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@ -20,18 +20,18 @@ import org.springframework.context.annotation.Configuration;
public class MybatisPlusConfig { public class MybatisPlusConfig {
/** /**
* 插件 * 插件
*/ */
// 最新版 // 最新版
@Bean @Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() { public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 插件 // 插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor(); DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor();
dynamicTableNameInnerInterceptor.setTableNameHandler( dynamicTableNameInnerInterceptor.setTableNameHandler(
//可以传多个表名参数指定哪些表使用MonthTableNameHandler处理表名称 //可以传多个表名参数指定哪些表使用MonthTableNameHandler处理表名称
new CustomizeTableNameHandler("ten_person_extract") new CustomizeTableNameHandler("ten_person_extract,mobile_device,mobile_package_order,mobile_call_logs")
); );
//以拦截器的方式处理表名称 //以拦截器的方式处理表名称

View File

@ -1,4 +1,4 @@
package net.shapelight.common.interceptor; package net.shapelight.common.handler;
import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler; import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler;

View File

@ -0,0 +1,19 @@
package net.shapelight.common.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import java.util.Date;
public class TimeHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}

View File

@ -0,0 +1,74 @@
package net.shapelight.modules.mobile.controler;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.mobile.entity.MobileDevice;
import net.shapelight.modules.mobile.service.MobileDeviceService;
import net.shapelight.modules.sys.controller.AbstractController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("mobile/device/")
@Api("话机设备管理")
public class DeviceController extends AbstractController {
@Autowired
MobileDeviceService mobileDeviceService;
@PostMapping("list")
@ApiOperation("设备列表")
@ApiImplicitParams({
@ApiImplicitParam(name="limit",value = "每页条数",paramType = "query",dataType = "String",required = true),
@ApiImplicitParam(name="page",value = "页码",paramType = "query",dataType = "String",required = true),
@ApiImplicitParam(name = "name", value = "设备名称", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "status", value = "设备状态", paramType = "query", dataType = "Integer"),
@ApiImplicitParam(name = "cellName", value = "学校名称", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "deptId", value = "设备区域名称", paramType = "query", dataType = "String")
})
public R list(@RequestBody Map<String,Object> params) {
//params.put("tenantId",getUser().getTenantId());
CustomizeTableNameHandler.setData(String.valueOf(getUser().getTenantId()));
PageUtils page = mobileDeviceService.queryPage(params);
CustomizeTableNameHandler.removeData();
return R.ok().put("data",page);
}
@PostMapping("add")
@ApiOperation("设备新增")
public R add(@RequestBody MobileDevice mobileDevice) {
//mobileDevice.setTenantId(getUser().getTenantId());
Long id = new SnowflakeIdWorker().nextId();
mobileDevice.setId(id);
CustomizeTableNameHandler.setData(String.valueOf(getUser().getTenantId()));
mobileDeviceService.save(mobileDevice);
CustomizeTableNameHandler.removeData();
return R.ok();
}
@PostMapping("update")
@ApiOperation("设备信息更新")
public R update(@RequestBody MobileDevice mobileDevice) {
return R.ok();
}
@PostMapping("delete")
@ApiOperation("删除设备")
public R delete(@RequestBody List<Long> deviceIdList) {
return R.ok();
}
}

View File

@ -0,0 +1,51 @@
package net.shapelight.modules.mobile.controler;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import net.shapelight.common.utils.R;
import net.shapelight.modules.mobile.entity.MobileDeviceGroup;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("mobile/device/group/")
@Api("话机设备组管理")
public class DeviceGroupController {
@PostMapping("list")
@ApiOperation("话机设备组列表")
@ApiImplicitParams({
@ApiImplicitParam(name="limit",value = "每页条数",paramType = "query",dataType = "String",required = true),
@ApiImplicitParam(name="page",value = "页码",paramType = "query",dataType = "String",required = true),
@ApiImplicitParam(name = "groupName", value = "设备组名称", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "status", value = "设备组状态", paramType = "query", dataType = "Integer"),
@ApiImplicitParam(name = "cellName", value = "学校名称", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "deptId", value = "设备组区域名称", paramType = "query", dataType = "String")
})
public R list(@RequestBody Map<String, Object> params) {
return R.ok();
}
@PostMapping("add")
@ApiOperation("设备组新增")
public R add(@RequestBody MobileDeviceGroup mobileDeviceGroup) {
return R.ok();
}
@PostMapping("remove")
@ApiOperation("设备组删除")
@ApiImplicitParam(name = "groupId",value = "设备组ID",paramType = "query",dataType = "List",required = true)
public R remove(@RequestBody List<Long> groupId) {
return R.ok();
}
@PostMapping("update")
@ApiOperation("设备组更新")
public R update(@RequestBody MobileDeviceGroup mobileDeviceGroup) {
return R.ok();
}
}

View File

@ -0,0 +1,75 @@
package net.shapelight.modules.mobile.entity;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
* @TableName mobile_call_logs
*/
@Data
@TableName("mobile_call_logs")
@ApiModel("设备通话记录")
public class MobileCallLogs implements Serializable {
/**
* id
*/
@NotNull(message="[id]不能为空")
@ApiModelProperty("id")
private Long id;
/**
* 设备ID
*/
@ApiModelProperty("设备ID")
private Long deviceId;
/**
* 人员ID
*/
@ApiModelProperty("人员ID")
private Long personId;
/**
* 联系人ID
*/
@ApiModelProperty("联系人ID")
private Long relationId;
/**
* 通话类型0语音1视频
*/
@ApiModelProperty("通话类型0语音1视频")
private Integer callType;
/**
* 是否接通(0否1是
*/
@ApiModelProperty("是否接通(0否1是")
private Integer isConnected;
/**
* 是否紧急电话
*/
@ApiModelProperty("是否紧急电话")
private Integer isSos;
/**
* 结束通话操作
*/
@ApiModelProperty("结束通话操作")
private Integer operateStatus;
/**
* 通话开始时间
*/
@ApiModelProperty("通话开始时间")
private Date startTime;
/**
* 通话结束时间
*/
@ApiModelProperty("通话结束时间")
private Date endTime;
}

View File

@ -0,0 +1,124 @@
package net.shapelight.modules.mobile.entity;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
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_device
*/
@Data
@TableName("mobile_device")
@ApiModel("设备信息")
public class MobileDevice implements Serializable {
/**
*
*/
@NotNull(message="[]不能为空")
@ApiModelProperty("id")
private Long id;
/**
* 设备唯一标识
*/
@NotBlank(message="[设备唯一标识]不能为空")
@Size(max= 30,message="编码长度不能超过30")
@ApiModelProperty("设备唯一标识")
@Length(max= 30,message="编码长度不能超过30")
private String sn;
/**
* 设备名称
*/
@Size(max= 20,message="编码长度不能超过20")
@ApiModelProperty("设备名称")
@Length(max= 20,message="编码长度不能超过20")
private String name;
/**
* 设备类型
*/
@Size(max= 20,message="编码长度不能超过20")
@ApiModelProperty("设备类型")
@Length(max= 20,message="编码长度不能超过20")
private String deviceType;
/**
* 设备组ID
*/
@ApiModelProperty("设备组ID")
private Long groupId;
/**
* 学校ID
*/
@ApiModelProperty("学校ID")
private Long cellId;
/**
* 设备IP
*/
@Size(max= 20,message="编码长度不能超过20")
@ApiModelProperty("设备IP")
@Length(max= 20,message="编码长度不能超过20")
private String deviceIp;
/**
* apk版本
*/
@Size(max= 10,message="编码长度不能超过10")
@ApiModelProperty("apk版本")
@Length(max= 10,message="编码长度不能超过10")
private String apkVersion;
/**
* voip到期时间
*/
@ApiModelProperty("voip到期时间")
private Date voipTime;
/**
* 人脸库
*/
@ApiModelProperty("人脸库")
private Integer faceCount;
/**
* 设备状态
*/
@ApiModelProperty("设备状态")
private Integer status;
/**
* 创建时间
*/
@ApiModelProperty("创建时间")
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty("更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
/**
* 创建人
*/
@Size(max= 20,message="编码长度不能超过20")
@ApiModelProperty("创建人")
@Length(max= 20,message="编码长度不能超过20")
private String createBy;
/**
* 区域ID
*/
@ApiModelProperty("区域ID")
private Long deptId;
@ApiModelProperty("运营商ID")
@TableField(exist = false)
private Long tenantId;
}

View File

@ -0,0 +1,93 @@
package net.shapelight.modules.mobile.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import org.springframework.data.annotation.CreatedDate;
import java.io.Serializable;
import java.util.Date;
/**
*
* @TableName mobile_device_group
*/
@Data
@TableName ("mobile_device_group")
@ApiModel("话机信息")
public class MobileDeviceGroup implements Serializable {
/**
* 设备组id
*/
@TableId
@ApiModelProperty(name = "设备组ID")
private Long groupId;
/**
* 分组名称
*/
@ApiModelProperty(name = "组名",required = true)
private String groupName;
/**
* 设备类型ID
*/
@ApiModelProperty(name = "类型ID",required = true)
private String modelId;
/**
* 学校ID
*/
@ApiModelProperty(name = "学校ID",required = true)
private Long cellId;
/**
* 设备数量
*/
@ApiModelProperty(name = "设备数量",required = true)
private Integer deviceCount;
/**
* 描述
*/
@ApiModelProperty(name = "描述",required = true)
private String describe;
/**
* 学校名称
*/
@ApiModelProperty(name = "学校名称",required = true)
private String cellName;
/**
* 设备区域
*/
@ApiModelProperty(name = "设备组区域",required = true)
private Long deptId;
/**
* 设备组状态
*/
@ApiModelProperty(name = "设备组状态")
private Integer status;
/**
* 创建时间
*/
@ApiModelProperty(name = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
* 修改时间
*/
@ApiModelProperty(name = "修改时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}

View File

@ -0,0 +1,116 @@
package net.shapelight.modules.mobile.entity;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
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_package
*/
@TableName("mobile_package")
@ApiModel("套餐信息")
@Data
public class MobilePackage implements Serializable {
/**
* 套餐ID
*/
@NotNull(message="[套餐ID]不能为空")
@ApiModelProperty("套餐ID")
private Long packageId;
/**
* 套餐名称
*/
@Size(max= 20,message="编码长度不能超过20")
@ApiModelProperty("套餐名称")
@Length(max= 20,message="编码长度不能超过20")
private String packageName;
/**
* 套餐类型
*/
@Size(max= 20,message="编码长度不能超过20")
@ApiModelProperty("套餐类型")
@Length(max= 20,message="编码长度不能超过20")
private String packageType;
/**
* 套餐价格
*/
@ApiModelProperty("套餐价格")
private BigDecimal price;
/**
* 通话时长
*/
@ApiModelProperty("通话时长")
private Integer duration;
/**
* 通话次数临时包
*/
@ApiModelProperty("通话次数(临时包)")
private Integer callCount;
/**
* 开始时间
*/
@ApiModelProperty("开始时间")
private Date startTime;
/**
* 结束时间
*/
@ApiModelProperty("结束时间")
private Date endTime;
/**
* 生效类型0当月1下月
*/
@ApiModelProperty("生效类型0当月1下月")
private Integer effectType;
/**
* 套餐模式
*/
@Size(max= 10,message="编码长度不能超过10")
@ApiModelProperty("套餐模式")
@Length(max= 10,message="编码长度不能超过10")
private String packageModel;
/**
* 折扣
*/
@ApiModelProperty("折扣")
private BigDecimal discount;
/**
* 月底是否清零
*/
@ApiModelProperty("月底是否清零")
private Integer isClear;
/**
* 状态0未启用1启用
*/
@ApiModelProperty("状态0未启用1启用")
private Integer status;
/**
* 创建时间
*/
@ApiModelProperty("创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty("更新时间")
private Date updateTime;
/**
* 创建人
*/
@Size(max= 20,message="编码长度不能超过20")
@ApiModelProperty("创建人")
@Length(max= 20,message="编码长度不能超过20")
private String createBy;
}

View File

@ -0,0 +1,259 @@
package net.shapelight.modules.mobile.entity;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
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_package_order
*/
@Data
@TableName("mobile_package_order")
@ApiModel("套餐订单")
public class MobilePackageOrder implements Serializable {
/**
* 订单ID
*/
@NotNull(message="[订单ID]不能为空")
@ApiModelProperty("订单ID")
private Long orderId;
/**
* 学生ID
*/
@ApiModelProperty("学生ID")
private Long personId;
/**
* 套餐ID
*/
@ApiModelProperty("套餐ID")
private Long packageId;
/**
* 支付金额
*/
@ApiModelProperty("支付金额")
private BigDecimal payment;
/**
* 付款时间
*/
@ApiModelProperty("付款时间")
private Date payTime;
/**
* 支付状态(1已支付0未支付)
*/
@ApiModelProperty("支付状态(1已支付0未支付)")
private Integer payStatus;
/**
* 生效时间
*/
@ApiModelProperty("生效时间")
private Date effectiveDate;
/**
* 剩余时长
*/
@ApiModelProperty("剩余时长")
private Integer remainderTime;
/**
* 剩余次数
*/
@ApiModelProperty("剩余次数")
private Integer remainderCount;
/**
* 生效状态
*/
@ApiModelProperty("生效状态")
private Integer status;
/**
* 学生姓名
*/
@Size(max= 20,message="编码长度不能超过20")
@ApiModelProperty("学生姓名")
@Length(max= 20,message="编码长度不能超过20")
private String personName;
/**
* 到期时间
*/
@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,18 @@
package net.shapelight.modules.mobile.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.shapelight.modules.mobile.entity.MobileCallLogs;
/**
* @author zhangbo
* @description 针对表mobile_call_logs的数据库操作Mapper
* @createDate 2024-11-14 09:51:55
* @Entity net.shapelight.modules.mobile.entity.MobileCallLogs
*/
public interface MobileCallLogsMapper extends BaseMapper<MobileCallLogs> {
}

View File

@ -0,0 +1,18 @@
package net.shapelight.modules.mobile.mapper;
import net.shapelight.modules.mobile.entity.MobileDeviceGroup;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author zhangbo
* @description 针对表mobile_device_group的数据库操作Mapper
* @createDate 2024-11-13 11:50:36
* @Entity net.shapelight.modules.mobile.entity.MobileDeviceGroup
*/
public interface MobileDeviceGroupMapper extends BaseMapper<MobileDeviceGroup> {
}

View File

@ -0,0 +1,18 @@
package net.shapelight.modules.mobile.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.shapelight.modules.mobile.entity.MobileDevice;
/**
* @author zhangbo
* @description 针对表mobile_device的数据库操作Mapper
* @createDate 2024-11-13 14:36:39
* @Entity net.shapelight.modules.mobile.entity.MobileDevice
*/
public interface MobileDeviceMapper extends BaseMapper<MobileDevice> {
}

View File

@ -0,0 +1,18 @@
package net.shapelight.modules.mobile.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.shapelight.modules.mobile.entity.MobilePackage;
/**
* @author zhangbo
* @description 针对表mobile_package的数据库操作Mapper
* @createDate 2024-11-14 09:50:19
* @Entity net.shapelight.modules.mobile.entity.MobilePackage
*/
public interface MobilePackageMapper extends BaseMapper<MobilePackage> {
}

View File

@ -0,0 +1,18 @@
package net.shapelight.modules.mobile.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.shapelight.modules.mobile.entity.MobilePackageOrder;
/**
* @author zhangbo
* @description 针对表mobile_package_order的数据库操作Mapper
* @createDate 2024-11-14 09:51:08
* @Entity net.shapelight.modules.mobile.entity.MobilePackageOrder
*/
public interface MobilePackageOrderMapper extends BaseMapper<MobilePackageOrder> {
}

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.MobileCallLogs;
/**
* @author zhangbo
* @description 针对表mobile_call_logs的数据库操作Service
* @createDate 2024-11-14 09:51:55
*/
public interface MobileCallLogsService extends IService<MobileCallLogs> {
}

View File

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

View File

@ -0,0 +1,16 @@
package net.shapelight.modules.mobile.service;
import com.baomidou.mybatisplus.extension.service.IService;
import net.shapelight.common.utils.PageUtils;
import net.shapelight.modules.mobile.entity.MobileDevice;
import java.util.Map;
/**
* @author zhangbo
* @description 针对表mobile_device的数据库操作Service
* @createDate 2024-11-13 14:36:39
*/
public interface MobileDeviceService extends IService<MobileDevice> {
PageUtils queryPage(Map<String,Object> params);
}

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.MobilePackageOrder;
/**
* @author zhangbo
* @description 针对表mobile_package_order的数据库操作Service
* @createDate 2024-11-14 09:51:08
*/
public interface MobilePackageOrderService extends IService<MobilePackageOrder> {
}

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.MobilePackage;
/**
* @author zhangbo
* @description 针对表mobile_package的数据库操作Service
* @createDate 2024-11-14 09:50:19
*/
public interface MobilePackageService extends IService<MobilePackage> {
}

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.MobileCallLogs;
import net.shapelight.modules.mobile.service.MobileCallLogsService;
import net.shapelight.modules.mobile.mapper.MobileCallLogsMapper;
import org.springframework.stereotype.Service;
/**
* @author zhangbo
* @description 针对表mobile_call_logs的数据库操作Service实现
* @createDate 2024-11-14 09:51:55
*/
@Service
public class MobileCallLogsServiceImpl extends ServiceImpl<MobileCallLogsMapper, MobileCallLogs>
implements MobileCallLogsService{
}

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.MobileDeviceGroup;
import net.shapelight.modules.mobile.service.MobileDeviceGroupService;
import net.shapelight.modules.mobile.mapper.MobileDeviceGroupMapper;
import org.springframework.stereotype.Service;
/**
* @author zhangbo
* @description 针对表mobile_device_group的数据库操作Service实现
* @createDate 2024-11-13 11:50:36
*/
@Service
public class MobileDeviceGroupServiceImpl extends ServiceImpl<MobileDeviceGroupMapper, MobileDeviceGroup>
implements MobileDeviceGroupService{
}

View File

@ -0,0 +1,35 @@
package net.shapelight.modules.mobile.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.shapelight.common.utils.PageUtils;
import net.shapelight.common.utils.Query;
import net.shapelight.modules.mobile.entity.MobileDevice;
import net.shapelight.modules.mobile.service.MobileDeviceService;
import net.shapelight.modules.mobile.mapper.MobileDeviceMapper;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @author zhangbo
* @description 针对表mobile_device的数据库操作Service实现
* @createDate 2024-11-13 14:36:39
*/
@Service
public class MobileDeviceServiceImpl extends ServiceImpl<MobileDeviceMapper, MobileDevice>
implements MobileDeviceService{
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<MobileDevice> page = this.page(new Query<MobileDevice>().getPage(params),new LambdaQueryWrapper<MobileDevice>()
.eq(params.get("name")!=null && params.get("name")!="",MobileDevice::getName,params.get("name")));
return new PageUtils(page);
}
}

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.MobilePackageOrder;
import net.shapelight.modules.mobile.service.MobilePackageOrderService;
import net.shapelight.modules.mobile.mapper.MobilePackageOrderMapper;
import org.springframework.stereotype.Service;
/**
* @author zhangbo
* @description 针对表mobile_package_order的数据库操作Service实现
* @createDate 2024-11-14 09:51:08
*/
@Service
public class MobilePackageOrderServiceImpl extends ServiceImpl<MobilePackageOrderMapper, MobilePackageOrder>
implements MobilePackageOrderService{
}

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.MobilePackage;
import net.shapelight.modules.mobile.service.MobilePackageService;
import net.shapelight.modules.mobile.mapper.MobilePackageMapper;
import org.springframework.stereotype.Service;
/**
* @author zhangbo
* @description 针对表mobile_package的数据库操作Service实现
* @createDate 2024-11-14 09:50:19
*/
@Service
public class MobilePackageServiceImpl extends ServiceImpl<MobilePackageMapper, MobilePackage>
implements MobilePackageService{
}

View File

@ -8,7 +8,7 @@ import io.netty.channel.Channel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.shapelight.common.config.GlobalValue; import net.shapelight.common.config.GlobalValue;
import net.shapelight.common.config.MinioConfig; import net.shapelight.common.config.MinioConfig;
import net.shapelight.common.interceptor.CustomizeTableNameHandler; import net.shapelight.common.handler.CustomizeTableNameHandler;
import net.shapelight.common.utils.*; import net.shapelight.common.utils.*;
import net.shapelight.modules.nettyapi.config.ClientMap; import net.shapelight.modules.nettyapi.config.ClientMap;
import net.shapelight.modules.nettyapi.config.CmdConstant; import net.shapelight.modules.nettyapi.config.CmdConstant;

View File

@ -55,7 +55,7 @@ public class TenParentController extends AbstractController {
@GetMapping("/list") @GetMapping("/list")
@ApiOperation(value = "查询访客列表", response = ParentVo.class) @ApiOperation(value = "查询家长列表", response = ParentVo.class)
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "limit", value = "每页条数", paramType = "query", dataType = "String", required = true), @ApiImplicitParam(name = "limit", value = "每页条数", paramType = "query", dataType = "String", required = true),
@ApiImplicitParam(name = "page", value = "页码", paramType = "query", dataType = "String", required = true), @ApiImplicitParam(name = "page", value = "页码", paramType = "query", dataType = "String", required = true),
@ -71,7 +71,11 @@ public class TenParentController extends AbstractController {
@PostMapping("/delete") @PostMapping("/delete")
@Transactional @Transactional
public R deleteParent(@RequestBody List<Map<String, String>> params) throws Exception { @ApiOperation(value = "删除家长信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "家长ID", paramType = "query", dataType = "List", required = true)
})
public R deleteParent(@RequestBody List<Map<String, String>> params) {
/*Map<String,Object> opParams = new HashMap<>(); /*Map<String,Object> opParams = new HashMap<>();
opParams.put("operation","delUserContactData"); opParams.put("operation","delUserContactData");
opParams.put("accountNumber",globalValue.accountNumber); opParams.put("accountNumber",globalValue.accountNumber);

View File

@ -5,7 +5,7 @@ import java.util.Map;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import net.shapelight.common.interceptor.CustomizeTableNameHandler; import net.shapelight.common.handler.CustomizeTableNameHandler;
import net.shapelight.modules.sys.controller.AbstractController; import net.shapelight.modules.sys.controller.AbstractController;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@ -29,6 +29,9 @@ public interface TenCellDao extends BaseMapper<TenCellEntity> {
void createTenCellDept(@Param("cellId")String cellId); void createTenCellDept(@Param("cellId")String cellId);
void createTenParent(@Param("cellId")String celId); void createTenParent(@Param("cellId")String celId);
void createTenRelation(@Param("cellId")String celId); void createTenRelation(@Param("cellId")String celId);
void createMobileCallLogs(@Param("cellId")String cellId);
void createMobilePackageOrder(@Param("cellId")String cellId);
void createMobileDevice(@Param("tenantId")String tenantId);

View File

@ -91,6 +91,9 @@ public class TenCellServiceImpl extends ServiceImpl<TenCellDao, TenCellEntity> i
// tenCellDao.createTenParent(cellId); // tenCellDao.createTenParent(cellId);
//tenCellDao.createTenRelation(cellId); //tenCellDao.createTenRelation(cellId);
//tenCellDao.createTenCellDept(cellId); //tenCellDao.createTenCellDept(cellId);
tenCellDao.createMobileCallLogs(cellId);
tenCellDao.createMobilePackageOrder(cellId);
tenCellDao.createMobileDevice(tenantId);
return super.save(entity); return super.save(entity);
} }

View File

@ -14,7 +14,7 @@ import io.minio.PutObjectOptions;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.shapelight.common.config.GlobalValue; import net.shapelight.common.config.GlobalValue;
import net.shapelight.common.config.MinioConfig; import net.shapelight.common.config.MinioConfig;
import net.shapelight.common.interceptor.CustomizeTableNameHandler; import net.shapelight.common.handler.CustomizeTableNameHandler;
import net.shapelight.common.utils.*; import net.shapelight.common.utils.*;
import net.shapelight.commons.engine.sdk.PicSDK; import net.shapelight.commons.engine.sdk.PicSDK;
import net.shapelight.modules.app.entity.AppUserEntity; import net.shapelight.modules.app.entity.AppUserEntity;
@ -913,7 +913,7 @@ public class TenPersonServiceImpl implements TenPersonService {
tenPersonDao.logicDeleteById(personId, cellId); tenPersonDao.logicDeleteById(personId, cellId);
tenRelationMapper.delete(new LambdaQueryWrapper<TenRelation>().eq(TenRelation::getStudentId,personId)); tenRelationMapper.delete(new LambdaQueryWrapper<TenRelation>().eq(TenRelation::getStudentId,personId));
Map<String, String> snPersons = tenPersonSyncService.findGroupDevicePerson(personId,cellId); Map<String, String> snPersons = tenPersonSyncService.findGroupDevicePerson(personId,cellId);
if(snPersons!=null) { if(snPersons!=null && !snPersons.isEmpty()) {
String sn = snPersons.get("deviceSn"); String sn = snPersons.get("deviceSn");
TenDeviceEntity deviceEntity = tenDeviceService.findBySn(sn); TenDeviceEntity deviceEntity = tenDeviceService.findBySn(sn);
if(deviceEntity==null){ if(deviceEntity==null){

View File

@ -106,7 +106,7 @@ global:
# secretKey: 0fad3477fb9f60c7be75561db967e8d7 # secretKey: 0fad3477fb9f60c7be75561db967e8d7
# bucketName: cell # bucketName: cell
wx: wx:
appid: wxf59991f23f1f5500 appid: wx313273bb23519704
secret: 30b523b2bdd7b0739b7f06e9dc1519f8 secret: 30b523b2bdd7b0739b7f06e9dc1519f8
tcp_server: tcp_server:
port: 8086 port: 8086

View File

@ -0,0 +1,26 @@
<?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.MobileCallLogsMapper">
<resultMap id="BaseResultMap" type="net.shapelight.modules.mobile.entity.MobileCallLogs">
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="deviceId" column="device_id" jdbcType="BIGINT"/>
<result property="personId" column="person_id" jdbcType="BIGINT"/>
<result property="relationId" column="relation_id" jdbcType="BIGINT"/>
<result property="callType" column="call_type" jdbcType="TINYINT"/>
<result property="isConnected" column="is_connected" jdbcType="TINYINT"/>
<result property="isSos" column="is_sos" jdbcType="TINYINT"/>
<result property="operateStatus" column="operate_status" jdbcType="TINYINT"/>
<result property="startTime" column="start_time" jdbcType="TIMESTAMP"/>
<result property="endTime" column="end_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id,device_id,person_id,
relation_id,call_type,is_connected,
is_sos,operate_status,start_time,
end_time
</sql>
</mapper>

View File

@ -0,0 +1,27 @@
<?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.MobileDeviceGroupMapper">
<resultMap id="BaseResultMap" type="net.shapelight.modules.mobile.entity.MobileDeviceGroup">
<id property="groupId" column="group_id" jdbcType="BIGINT"/>
<result property="groupName" column="group_name" jdbcType="VARCHAR"/>
<result property="modelId" column="model_id" jdbcType="VARCHAR"/>
<result property="cellId" column="cell_id" jdbcType="BIGINT"/>
<result property="deviceCount" column="device_count" jdbcType="INTEGER"/>
<result property="describe" column="describe" jdbcType="VARCHAR"/>
<result property="cellName" column="cell_name" jdbcType="VARCHAR"/>
<result property="deptId" column="dept_id" jdbcType="BIGINT"/>
<result property="status" column="status" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
group_id,group_name,model_id,
cell_id,device_count,describe,
cell_name,dept_id,status,
create_time,update_time
</sql>
</mapper>

View File

@ -0,0 +1,32 @@
<?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.MobileDeviceMapper">
<resultMap id="BaseResultMap" type="net.shapelight.modules.mobile.entity.MobileDevice">
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="sn" column="sn" jdbcType="VARCHAR"/>
<result property="name" column="name" jdbcType="VARCHAR"/>
<result property="deviceType" column="device_type" jdbcType="VARCHAR"/>
<result property="groupId" column="group_id" jdbcType="BIGINT"/>
<result property="cellId" column="cell_id" jdbcType="BIGINT"/>
<result property="deptId" column="dept_id" jdbcType="BIGINT"/>
<result property="deviceIp" column="device_ip" jdbcType="VARCHAR"/>
<result property="apkVersion" column="apk_version" jdbcType="VARCHAR"/>
<result property="voipTime" column="voip_time" jdbcType="TIMESTAMP"/>
<result property="faceCount" column="face_count" jdbcType="INTEGER"/>
<result property="status" column="status" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id,sn,name,
device_type,group_id,cell_id,
dept_id,device_ip,apk_version,voip_time,
face_count,status,create_time,
update_time,create_by
</sql>
</mapper>

View File

@ -0,0 +1,34 @@
<?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.MobilePackageMapper">
<resultMap id="BaseResultMap" type="net.shapelight.modules.mobile.entity.MobilePackage">
<id property="packageId" column="package_id" jdbcType="BIGINT"/>
<result property="packageName" column="package_name" jdbcType="VARCHAR"/>
<result property="packageType" column="package_type" jdbcType="VARCHAR"/>
<result property="price" column="price" jdbcType="DECIMAL"/>
<result property="duration" column="duration" jdbcType="INTEGER"/>
<result property="callCount" column="call_count" jdbcType="INTEGER"/>
<result property="startTime" column="start_time" jdbcType="TIMESTAMP"/>
<result property="endTime" column="end_time" jdbcType="TIMESTAMP"/>
<result property="effectType" column="effect_type" jdbcType="INTEGER"/>
<result property="packageModel" column="package_model" jdbcType="VARCHAR"/>
<result property="discount" column="discount" jdbcType="DECIMAL"/>
<result property="isClear" column="is_clear" jdbcType="INTEGER"/>
<result property="status" column="status" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
package_id,package_name,package_type,
price,duration,call_count,
start_time,end_time,effect_type,
package_model,discount,is_clear,
status,create_time,update_time,
create_by
</sql>
</mapper>

View File

@ -0,0 +1,28 @@
<?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.MobilePackageOrderMapper">
<resultMap id="BaseResultMap" type="net.shapelight.modules.mobile.entity.MobilePackageOrder">
<id property="orderId" column="order_id" jdbcType="BIGINT"/>
<result property="personId" column="person_id" jdbcType="BIGINT"/>
<result property="packageId" column="package_id" jdbcType="BIGINT"/>
<result property="payment" column="payment" jdbcType="DECIMAL"/>
<result property="payTime" column="pay_time" jdbcType="TIMESTAMP"/>
<result property="payStatus" column="pay_status" jdbcType="INTEGER"/>
<result property="effectiveDate" column="effective_date" jdbcType="TIMESTAMP"/>
<result property="remainderTime" column="remainder_time" jdbcType="INTEGER"/>
<result property="remainderCount" column="remainder_count" jdbcType="INTEGER"/>
<result property="status" column="status" jdbcType="TINYINT"/>
<result property="personName" column="person_name" jdbcType="VARCHAR"/>
<result property="expireTime" column="expire_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
order_id,person_id,package_id,
payment,pay_time,pay_status,
effective_date,remainder_time,remainder_count,
status,person_name,expire_time
</sql>
</mapper>

View File

@ -79,6 +79,18 @@
create table if not exists `ten_relation_${cellId}` like `ten_relation_0`; create table if not exists `ten_relation_${cellId}` like `ten_relation_0`;
</update> </update>
<update id="createMobileCallLogs" parameterType="String">
create table if not exists `mobile_call_logs_${cellId}` like `mobile_call_logs`;
</update>
<update id="createMobilePackageOrder" parameterType="String">
create table if not exists `mobile_package_order_${cellId}` like `mobile_package_order`;
</update>
<update id="createMobileDevice" parameterType="String">
create table if not exists `mobile_device_${teantId}` like `mobile_device`;
</update>
<select id="queryList" resultMap="tenCellMap"> <select id="queryList" resultMap="tenCellMap">
select * from ten_cell where delete_flag = 0 and tenant_id = #{params.tenantId} select * from ten_cell where delete_flag = 0 and tenant_id = #{params.tenantId}
<if test="params.sql_filter != null"> <if test="params.sql_filter != null">