Compare commits

...

14 Commits

@ -42,214 +42,310 @@ import com.utils.CommonUtil;
/** /**
* 线 * 线
* *
* @author * @author
* @email * @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
@RestController @RestController
@RequestMapping("/chat") @RequestMapping("/chat")
public class ChatController { public class ChatController {
// 自动注入ChatService实例用于处理与聊天相关的业务逻辑
@Autowired @Autowired
private ChatService chatService; private ChatService chatService;
/** /**
* *
*
* @param params Map
* @param chat ChatEntity
* @param request HttpServletRequest
* @return R
*/ */
@RequestMapping("/page") @RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ChatEntity chat, public R page(@RequestParam Map<String, Object> params, ChatEntity chat,
HttpServletRequest request){ HttpServletRequest request) {
if(!request.getSession().getAttribute("role").toString().equals("管理员")) { // 如果当前用户不是管理员角色,设置查询条件,只查询当前用户的聊天记录
chat.setUserid((Long)request.getSession().getAttribute("userId")); if (!request.getSession().getAttribute("role").toString().equals("管理员")) {
}
chat.setUserid((Long) request.getSession().getAttribute("userId"));
}
// 创建一个EntityWrapper对象用于构建MyBatis Plus的查询条件
EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>(); EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();
PageUtils page = chatService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chat), params), params)); // 调用chatService的queryPage方法进行分页查询传入构建好的查询条件和参数
request.setAttribute("data", page); PageUtils page = chatService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chat), params), params));
// 将查询结果设置到请求属性中,可能用于在后续的视图渲染中使用
request.setAttribute("data", page);
// 返回包含查询结果的R对象通常R对象用于统一封装返回结果的状态和数据
return R.ok().put("data", page); return R.ok().put("data", page);
} }
/** /**
* *
*
* @param params Map
* @param chat ChatEntity
* @param request HttpServletRequest
* @return R
*/ */
@RequestMapping("/list") @RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ChatEntity chat, public R list(@RequestParam Map<String, Object> params, ChatEntity chat,
HttpServletRequest request){ HttpServletRequest request) {
if(!request.getSession().getAttribute("role").toString().equals("管理员")) { // 如果当前用户不是管理员角色,设置查询条件,只查询当前用户的聊天记录
chat.setUserid((Long)request.getSession().getAttribute("userId")); if (!request.getSession().getAttribute("role").toString().equals("管理员")) {
}
chat.setUserid((Long) request.getSession().getAttribute("userId"));
}
// 创建一个EntityWrapper对象用于构建MyBatis Plus的查询条件
EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>(); EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();
PageUtils page = chatService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chat), params), params)); // 调用chatService的queryPage方法进行分页查询传入构建好的查询条件和参数
request.setAttribute("data", page); PageUtils page = chatService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chat), params), params));
// 将查询结果设置到请求属性中,可能用于在后续的视图渲染中使用
request.setAttribute("data", page);
// 返回包含查询结果的R对象通常R对象用于统一封装返回结果的状态和数据
return R.ok().put("data", page); return R.ok().put("data", page);
} }
/** /**
* *
* ChatEntity
* @param chat ChatEntity
* @return R
*/ */
@RequestMapping("/lists") @RequestMapping("/lists")
public R list( ChatEntity chat){ public R list(ChatEntity chat) {
EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>(); // 创建一个EntityWrapper对象用于构建MyBatis Plus的查询条件
ew.allEq(MPUtil.allEQMapPre( chat, "chat")); EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();
// 根据传入的ChatEntity对象构建等值查询条件
ew.allEq(MPUtil.allEQMapPre(chat, "chat"));
// 调用chatService的selectListView方法进行查询并返回结果
return R.ok().put("data", chatService.selectListView(ew)); return R.ok().put("data", chatService.selectListView(ew));
} }
/** /**
* *
* 线
* @param chat ChatEntity
* @return R线
*/ */
@RequestMapping("/query") @RequestMapping("/query")
public R query(ChatEntity chat){ public R query(ChatEntity chat) {
EntityWrapper< ChatEntity> ew = new EntityWrapper< ChatEntity>(); // 创建一个EntityWrapper对象用于构建MyBatis Plus的查询条件
ew.allEq(MPUtil.allEQMapPre( chat, "chat")); EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();
ChatView chatView = chatService.selectView(ew); // 根据传入的ChatEntity对象构建等值查询条件
return R.ok("查询在线咨询成功").put("data", chatView); ew.allEq(MPUtil.allEQMapPre(chat, "chat"));
// 调用chatService的selectView方法进行查询获取ChatView对象可能是包含详细信息的视图对象
ChatView chatView = chatService.selectView(ew);
// 返回包含查询结果的R对象以及提示信息和查询到的详细信息视图
return R.ok("查询在线咨询成功").put("data", chatView);
} }
/** /**
* *
* ID
* @param id ID
* @return R
*/ */
@RequestMapping("/info/{id}") @RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){ public R info(@PathVariable("id") Long id) {
// 调用chatService的selectById方法根据ID查询聊天记录
ChatEntity chat = chatService.selectById(id); ChatEntity chat = chatService.selectById(id);
// 返回包含查询结果的R对象
return R.ok().put("data", chat); return R.ok().put("data", chat);
} }
/** /**
* *
* @IgnoreAuth
* @param id ID
* @return R
*/ */
@IgnoreAuth @IgnoreAuth
@RequestMapping("/detail/{id}") @RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){ public R detail(@PathVariable("id") Long id) {
// 调用chatService的selectById方法根据ID查询聊天记录
ChatEntity chat = chatService.selectById(id); ChatEntity chat = chatService.selectById(id);
// 返回包含查询结果的R对象
return R.ok().put("data", chat); return R.ok().put("data", chat);
} }
/** /**
* *
*
* @param chat ChatEntity
* @param request HttpServletRequest
* @return R
*/ */
@RequestMapping("/save") @RequestMapping("/save")
public R save(@RequestBody ChatEntity chat, HttpServletRequest request){ public R save(@RequestBody ChatEntity chat, HttpServletRequest request) {
chat.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue()); // 设置聊天记录的ID由当前时间戳加上一个随机数生成
//ValidatorUtils.validateEntity(chat); chat.setId(new Date().getTime() + new Double(Math.floor(Math.random() * 1000)).longValue());
if(StringUtils.isNotBlank(chat.getAsk())) { // 此处原本可能用于验证ChatEntity对象的合法性但被注释掉了
chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", request.getSession().getAttribute("userId"))); //ValidatorUtils.validateEntity(chat);
chat.setUserid((Long)request.getSession().getAttribute("userId")); // 如果聊天记录的提问内容不为空
chat.setIsreply(1); if (StringUtils.isNotBlank(chat.getAsk())) {
} // 更新当前用户的未回复状态为0表示有新提问
if(StringUtils.isNotBlank(chat.getReply())) { chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", request.getSession().getAttribute("userId")));
chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", chat.getUserid())); // 设置聊天记录的用户ID为当前用户ID
chat.setAdminid((Long)request.getSession().getAttribute("userId")); chat.setUserid((Long) request.getSession().getAttribute("userId"));
} // 设置回复状态为1表示已提问等待回复
chat.setIsreply(1);
}
// 如果聊天记录的回复内容不为空
if (StringUtils.isNotBlank(chat.getReply())) {
// 更新当前用户提问用户的未回复状态为0表示有新回复
chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", chat.getUserid()));
// 设置聊天记录的管理员ID为当前用户ID可能表示回复的管理员
chat.setAdminid((Long) request.getSession().getAttribute("userId"));
}
// 调用chatService的insert方法插入新的聊天记录
chatService.insert(chat); chatService.insert(chat);
// 返回表示保存成功的R对象
return R.ok(); return R.ok();
} }
/** /**
* *
*
* @param chat ChatEntity
* @param request HttpServletRequest
* @return R
*/ */
@RequestMapping("/add") @RequestMapping("/add")
public R add(@RequestBody ChatEntity chat, HttpServletRequest request){ public R add(@RequestBody ChatEntity chat, HttpServletRequest request) {
chat.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue()); // 设置聊天记录的ID由当前时间戳加上一个随机数生成
//ValidatorUtils.validateEntity(chat); chat.setId(new Date().getTime() + new Double(Math.floor(Math.random() * 1000)).longValue());
chat.setUserid((Long)request.getSession().getAttribute("userId"));
if(StringUtils.isNotBlank(chat.getAsk())) {
chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", request.getSession().getAttribute("userId"))); // 设置聊天记录的用户ID为当前用户ID
chat.setUserid((Long)request.getSession().getAttribute("userId")); chat.setUserid((Long) request.getSession().getAttribute("userId"));
chat.setIsreply(1); // 如果聊天记录的提问内容不为空
} if (StringUtils.isNotBlank(chat.getAsk())) {
if(StringUtils.isNotBlank(chat.getReply())) { // 更新当前用户的未回复状态为0表示有新提问
chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", chat.getUserid())); chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", request.getSession().getAttribute("userId")));
chat.setAdminid((Long)request.getSession().getAttribute("userId")); // 设置聊天记录的用户ID为当前用户ID
} chat.setUserid((Long) request.getSession().getAttribute("UserId"));
// 设置回复状态为1表示已提问等待回复
chat.setIsreply(1);
}
// 如果聊天记录的回复内容不为空
if (StringUtils.isNotBlank(chat.getReply())) {
// 更新当前用户提问用户的未回复状态为0表示有新回复
chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", chat.getUserid()));
// 设置聊天记录的管理员ID为当前用户ID可能表示回复的管理员
chat.setAdminid((Long) request.getSession().getAttribute("UserId"));
}
// 调用chatService的insert方法插入新的聊天记录
chatService.insert(chat); chatService.insert(chat);
// 返回表示保存成功的R对象
return R.ok(); return R.ok();
} }
/** /**
* *
*
* @param chat ChatEntity
* @param request HttpServletRequest
* @return R
*/ */
@RequestMapping("/update") @RequestMapping("/update")
@Transactional @Transactional
public R update(@RequestBody ChatEntity chat, HttpServletRequest request){ public R update(@RequestBody ChatEntity chat, HttpServletRequest request) {
// 此处原本可能用于验证ChatEntity对象的合法性但被注释掉了
//ValidatorUtils.validateEntity(chat); //ValidatorUtils.validateEntity(chat);
chatService.updateById(chat);//全部更新 // 调用chatService的updateById方法根据ID更新聊天记录
chatService.updateById(chat); //全部更新
// 返回表示修改成功的R对象
return R.ok(); return R.ok();
} }
/** /**
* *
* ID
* @param ids ID
* @return R
*/ */
@RequestMapping("/delete") @RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){ public R delete(@RequestBody Long[] ids) {
// 调用chatService的deleteBatchIds方法批量删除指定ID的聊天记录
chatService.deleteBatchIds(Arrays.asList(ids)); chatService.deleteBatchIds(Arrays.asList(ids));
// 返回表示删除成功的R对象
return R.ok(); return R.ok();
} }
/** /**
* *
*
* @param columnName
* @param request HttpServletRequest
* @param type
* @param map Map
* @return R
*/ */
@RequestMapping("/remind/{columnName}/{type}") @RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) { @PathVariable("type") String type, @RequestParam Map<String, Object> map) {
map.put("column", columnName); // 将列名和类型添加到查询条件Map中
map.put("type", type); map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 如果提醒类型为2
Calendar c = Calendar.getInstance(); if (type.equals("2")) {
Date remindStartDate = null; // 创建SimpleDateFormat对象用于日期格式化
Date remindEndDate = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if(map.get("remindstart")!=null) { // 获取Calendar实例用于日期计算
Integer remindStart = Integer.parseInt(map.get("remindstart").toString()); Calendar c = Calendar.getInstance();
c.setTime(new Date()); Date remindStartDate = null;
c.add(Calendar.DAY_OF_MONTH,remindStart); Date remindEndDate = null;
remindStartDate = c.getTime(); // 如果查询条件Map中包含remindstart开始提醒时间
map.put("remindstart", sdf.format(remindStartDate)); if (map.get("remindstart")!= null) {
} // 将remindstart转换为整数表示要添加的天数
if(map.get("remindend")!=null) { Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
Integer remindEnd = Integer.parseInt(map.get("remindend").toString()); // 设置当前日期为基础日期
c.setTime(new Date()); c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd); // 根据提醒开始天数添加到当前日期上
remindEndDate = c.getTime(); c.add(Calendar.DAY_OF_MONTH, remindStart);
map.put("remindend", sdf.format(remindEndDate)); // 获取计算后的提醒开始日期
} remindStartDate = c.getTime();
} // 将提醒开始日期格式化为指定格式并更新到查询条件Map中
map.put("remindstart", sdf.format(remindStartDate));
Wrapper<ChatEntity> wrapper = new EntityWrapper<ChatEntity>(); }
if(map.get("remindstart")!=null) { // 如果查询条件Map中包含remindend结束提醒时间
wrapper.ge(columnName, map.get("remindstart")); if (map.get("remindend")!= null) {
} // 将remindend转换为整数表示要添加的天数
if(map.get("remindend")!=null) { Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
wrapper.le(columnName, map.get("remindend")); // 设置当前日期为基础日期
} c.setTime(new Date());
// 根据提醒结束天数添加到当前日期上
c.add(Calendar.DAY_OF_MONTH, remindEnd);
int count = chatService.selectCount(wrapper); // 获取计算后的提醒结束日期
return R.ok().put("count", count); remindEndDate = c.getTime();
} // 将提醒结束日期格式化为指定格式并更新到查询条件Map中
map.put("remindend", sdf.format(remindEndDate));
}
}
// 创建一个EntityWrapper对象用于构建MyBatis Plus的查询条件
Wrapper<ChatEntity> wrapper = new EntityWrapper<ChatEntity>();
// 如果查询条件Map中包含remindstart开始提醒时间添加大于等于条件到查询条件中
if (map.get("remindstart")!= null) {
wrapper.ge(columnName, map.get("remindstart"));
}
} // 如果查询条件Map中包含remindend结束提醒时间添加小于等于条件到查询条件中
if (map.get("remindend")!= null) {
wrapper.le(columnName, map.get("remindend"));
}
// 调用chatService的selectCount方法根据构建好的查询条件统计符合条件的聊天记录数量
int count = chatService.selectCount(wrapper);
// 返回包含统计结果的R对象
return R.ok().put("count", count);
}
}

@ -28,202 +28,286 @@ import com.baidu.aip.face.MatchRequest;
import com.baidu.aip.util.Base64Util; import com.baidu.aip.util.Base64Util;
import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity; import com.entity.ConfigEntity;
// 导入相关的服务类和工具类
import com.service.CommonService; import com.service.CommonService;
import com.service.ConfigService; import com.service.ConfigService;
import com.utils.BaiduUtil; import com.utils.BaiduUtil;
import com.utils.FileUtil; import com.utils.FileUtil;
import com.utils.R; import com.utils.R;
import com.utils.CommonUtil; import com.utils.CommonUtil;
/** /**
* *
* SpringRestController
*
*/ */
@RestController @RestController
public class CommonController{ public class CommonController {
@Autowired
private CommonService commonService; // 自动注入CommonService用于处理通用的业务逻辑
@Autowired
private CommonService commonService;
// 定义百度AI人脸识别客户端对象初始化为null
private static AipFace client = null; private static AipFace client = null;
// 自动注入ConfigService可能用于获取配置相关信息
@Autowired @Autowired
private ConfigService configService; private ConfigService configService;
/**
* tablecolumn() /**
* @param table * tablecolumn
* @param column *
* @return *
*/ * @param tableName
@RequestMapping("/option/{tableName}/{columnName}") * @param columnName
@IgnoreAuth * @param conditionColumn
public R getOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName,@RequestParam(required = false) String conditionColumn,@RequestParam(required = false) String conditionValue,String level,String parent) { * @param conditionValue conditionColumn使
Map<String, Object> params = new HashMap<String, Object>(); * @param level
params.put("table", tableName); * @param parent
params.put("column", columnName); * @return RR
if(StringUtils.isNotBlank(level)) { */
params.put("level", level); @RequestMapping("/option/{tableName}/{columnName}")
} @IgnoreAuth
if(StringUtils.isNotBlank(parent)) { public R getOption(@PathVariable("tableName") String tableName, @PathVariable("tableName") String columnName,
params.put("parent", parent); @RequestParam(required = false) String conditionColumn,
} @RequestParam(required = false) String conditionValue, String level, String parent) {
if(StringUtils.isNotBlank(conditionColumn)) { // 创建一个用于存储参数的Map对象
Map<String, Object> params = new HashMap<String, Object>();
params.put("table", tableName);
params.put("column", columnName);
if (StringUtils.isNotBlank(level)) {
params.put("level", level);
}
if (StringUtils.isNotBlank(parent)) {
params.put("parent", parent);
}
if (StringUtils.isNotBlank(conditionColumn)) {
params.put("conditionColumn", conditionColumn); params.put("conditionColumn", conditionColumn);
} }
if(StringUtils.isNotBlank(conditionValue)) { if (StringUtils.isNotBlank(conditionValue)) {
params.put("conditionValue", conditionValue); params.put("conditionValue", conditionValue);
} }
List<String> data = commonService.getOption(params);
return R.ok().put("data", data); // 调用commonService的getOption方法获取数据列表
} List<String> data = commonService.getOption(params);
/** // 返回包含数据列表的R对象结果状态为成功
* tablecolumn return R.ok().put("data", data);
* @param table }
* @param column
* @return /**
*/ * tablecolumn
@RequestMapping("/follow/{tableName}/{columnName}") *
@IgnoreAuth *
public R getFollowByOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, @RequestParam String columnValue) { * @param tableName
Map<String, Object> params = new HashMap<String, Object>(); * @param columnName
params.put("table", tableName); * @param columnValue
params.put("column", columnName); * @return R
params.put("columnValue", columnValue); */
Map<String, Object> result = commonService.getFollowByOption(params); @RequestMapping("/follow/{tableName}/{columnName}")
return R.ok().put("data", result); @IgnoreAuth
} public R getFollowByOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName,
@RequestParam String columnValue) {
/** // 创建一个用于存储参数的Map对象
* tablesfsh Map<String, Object> params = new HashMap<String, Object>();
* @param table params.put("table", tableName);
* @param map params.put("column", columnName);
* @return params.put("columnValue", columnValue);
*/
@RequestMapping("/sh/{tableName}") // 调用commonService的getFollowByOption方法获取单条记录数据
public R sh(@PathVariable("tableName") String tableName, @RequestBody Map<String, Object> map) { Map<String, Object> result = commonService.getFollowByOption(params);
map.put("table", tableName);
commonService.sh(map); // 返回包含单条记录数据的R对象结果状态为成功
return R.ok(); return R.ok().put("data", result);
} }
/** /**
* * tablesfsh
* @param tableName * MapcommonServiceshsfsh
* @param columnName *
* @param type 1: 2: * @param tableName
* @param map * @param map Map
* @return * @return R
*/ */
@RequestMapping("/remind/{tableName}/{columnName}/{type}") @RequestMapping("/sh/{tableName}")
@IgnoreAuth public R sh(@PathVariable("tableName") String tableName, @RequestBody Map<String, Object> map) {
public R remindCount(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, map.put("table", tableName);
@PathVariable("type") String type,@RequestParam Map<String, Object> map) { commonService.sh(map);
map.put("table", tableName); return R.ok();
map.put("column", columnName); }
map.put("type", type);
/**
if(type.equals("2")) { *
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); * Map
Calendar c = Calendar.getInstance(); * 2
Date remindStartDate = null; *
Date remindEndDate = null; * @param tableName
if(map.get("remindstart")!=null) { * @param columnName
Integer remindStart = Integer.parseInt(map.get("remindstart").toString()); * @param type 12
c.setTime(new Date()); * @param map Maptype2
c.add(Calendar.DAY_OF_MONTH,remindStart); * @return R
remindStartDate = c.getTime(); */
map.put("remindstart", sdf.format(remindStartDate)); @RequestMapping("/remind/{tableName}/{columnName}/{type}")
} @IgnoreAuth
if(map.get("remindend")!=null) { public R remindCount(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName,
Integer remindEnd = Integer.parseInt(map.get("remindend").toString()); @PathVariable("type") String type, @RequestParam Map<String, Object> map) {
c.setTime(new Date()); map.put("table", tableName);
c.add(Calendar.DAY_OF_MONTH,remindEnd); map.put("column", columnName);
remindEndDate = c.getTime(); map.put("type", type);
map.put("remindend", sdf.format(remindEndDate));
} if (type.equals("2")) {
} SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
int count = commonService.remindCount(map); Date remindStartDate = null;
return R.ok().put("count", count); Date remindEndDate = null;
} if (map.get("remindstart")!= null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
/** c.setTime(new Date());
* c.add(Calendar.DAY_OF_MONTH, remindStart);
*/ remindStartDate = c.getTime();
@RequestMapping("/cal/{tableName}/{columnName}") map.put("remindstart", sdf.format(remindStartDate));
@IgnoreAuth }
public R cal(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) { if (map.get("remindend")!= null) {
Map<String, Object> params = new HashMap<String, Object>(); Integer recommendEnd = Integer.parseInt(map.get("remindend").toString());
params.put("table", tableName); c.setTime(new Date());
params.put("column", columnName); c.add(Calendar.DAY_OF_MONTH, recommendEnd);
Map<String, Object> result = commonService.selectCal(params); remindEndDate = c.getTime();
return R.ok().put("data", result); map.put("remindend", sdf.format(remindEndDate));
} }
}
/**
* // 调用commonService的remindCount方法获取需要提醒的记录数
*/ int count = commonService.remindCount(map);
@RequestMapping("/group/{tableName}/{columnName}")
@IgnoreAuth // 返回包含记录数的R对象结果状态为成功
public R group(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) { return R.ok().put("count", count);
Map<String, Object> params = new HashMap<String, Object>(); }
params.put("table", tableName);
params.put("column", columnName); /**
List<Map<String, Object>> result = commonService.selectGroup(params); *
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); * commonServiceselectCal
for(Map<String, Object> m : result) { *
for(String k : m.keySet()) { * @param tableName
if(m.get(k) instanceof Date) { * @param columnName
m.put(k, sdf.format((Date)m.get(k))); * @return R
} */
} @RequestMapping("/cal/{tableName}/{columnName}")
} @IgnoreAuth
return R.ok().put("data", result); public R cal(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
} Map<String, Object> params = new HashMap<String, Object>();
params.put("table", tableName);
/** params.put("column", columnName);
*
*/ // 调用commonService的selectCal方法进行求和操作并获取结果
@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}") Map<String, Object> result = commonService.selectCal(params);
@IgnoreAuth
public R value(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName) { // 返回包含求和结果的R对象结果状态为成功
Map<String, Object> params = new HashMap<String, Object>(); return R.ok().put("data", result);
params.put("table", tableName); }
params.put("xColumn", xColumnName);
params.put("yColumn", yColumnName); /**
List<Map<String, Object>> result = commonService.selectValue(params); *
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); * commonServiceselectGroup
for(Map<String, Object> m : result) { *
for(String k : m.keySet()) { *
if(m.get(k) instanceof Date) { * @param tableName
m.put(k, sdf.format((Date)m.get(k))); @param columnName
} * @return R
} */
} @RequestMapping("/group/{tableName}/{columnName}")
return R.ok().put("data", result); @IgnoreAuth
} public R group(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
Map<String, Object> params = new HashMap<String, Object>();
/** params.put("table", tableName);
* params.put("column", columnName);
*/
@IgnoreAuth // 调用commonService的selectGroup方法进行分组统计操作并获取结果
@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}/{timeStatType}") List<Map<String, Object>> result = commonService.selectGroup(params);
public R valueDay(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType) {
Map<String, Object> params = new HashMap<String, Object>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
params.put("table", tableName); for (Map<String, Object> m : result) {
params.put("xColumn", xColumnName); for (String k : m.keySet()) {
params.put("yColumn", yColumnName); if (m.get(k) instanceof Date) {
params.put("timeStatType", timeStatType); m.put(k, sdf.format((Date) m.get(k)));
List<Map<String, Object>> result = commonService.selectTimeStatValue(params); }
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); }
for(Map<String, Object> m : result) { }
for(String k : m.keySet()) {
if(m.get(k) instanceof Date) { // 返回包含分组统计结果的R对象结果状态为成功
m.put(k, sdf.format((Date)m.get(k))); return R.ok().put("data", result);
} }
}
} /**
return R.ok().put("data", result); *
} * xycommonServiceselectValue
*
*
* @param tableName
} * @param yColumnName y
* @param xColumnName x
* @return R
*/
@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}")
@IgnoreAuth
public R value(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName,
@PathVariable("xColumnName") String xColumnName) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("table", tableName);
params.put("xColumn", xColumnName);
params.put("yColumn", yColumnName);
// 调用commonService的selectValue方法进行按值统计操作并获取结果
List<Map<String, Object> > result = commonService.selectValue(params);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (Map<String, Object> m : result) {
for (String k : m.keySet()) {
if (m.get(k) instanceof Date) {
m.put(k, sdf.format((Date) m.get(k)));
}
}
}
// 返回包含按值统计结果的R对象结果状态为成功
return R.ok().put("data", result);
}
/**
*
* xycommonServiceselectTimeStatValue
*
*
* @param tableName
* @param yColumnName y
* @param xColumnName x
* @param timeStatType
* @return R
*/
@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}/{timeStatType}")
@IgnoreAuth
public R valueDay(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName,
@PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("table", tableName);
params.put("xColumn", xColumnName);
params.put("yColumn", yColumnName);
params.put("timeStatType", timeStatType);
// 调用commonService的selectTimeStatValue方法进行按值统计操作并获取结果
List<Map<String, Object> > result = commonService.selectTimeStatValue(params);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (Map<String, Object> m : result) {
for (String k : m.keySet()) {
if (m.get(k) instanceof Date) {
m.put(k, sdf.format((Date) m.get(k)));
}
}
}
// 返回包含按值统计结果的R对象结果状态为成功
return R.ok().put("data", result);
}
}

@ -1,7 +1,5 @@
package com.controller; package com.controller;
import java.util.Arrays; import java.util.Arrays;
import java.util.Map; import java.util.Map;
@ -13,100 +11,118 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth; import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.EntityWrapper; // MyBatis-Plus的实体包装器
import com.entity.ConfigEntity; import com.entity.ConfigEntity; // 配置实体类
import com.service.ConfigService; import com.service.ConfigService; // 配置服务类
import com.utils.MPUtil; import com.utils.MPUtil; // MyBatis-Plus工具类
import com.utils.PageUtils; import com.utils.PageUtils;
import com.utils.R; import com.utils.R;
import com.utils.ValidatorUtils; import com.utils.ValidatorUtils;
/** /**
* *
*/ */
@RequestMapping("config") @RequestMapping("config") // 设置基本请求路径为"/config"
@RestController @RestController // 标记为REST风格的控制器
public class ConfigController{ public class ConfigController {
@Autowired @Autowired // 自动注入ConfigService
private ConfigService configService; private ConfigService configService;
/** /**
* *
* @param params
* @param config
* @return
*/ */
@RequestMapping("/page") @RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ConfigEntity config){ public R page(@RequestParam Map<String, Object> params, ConfigEntity config) {
EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>(); EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>(); // 创建EntityWrapper用于条件构造
PageUtils page = configService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, config), params), params)); PageUtils page = configService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, config), params), params)); // 查询分页数据
return R.ok().put("data", page); return R.ok().put("data", page);
} }
/** /**
* *
* @param params
* @param config
* @return
*/ */
@IgnoreAuth @IgnoreAuth // 忽略身份验证
@RequestMapping("/list") @RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ConfigEntity config){ public R list(@RequestParam Map<String, Object> params, ConfigEntity config) {
EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>(); EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>(); // 创建EntityWrapper用于条件构造
PageUtils page = configService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, config), params), params)); PageUtils page = configService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, config), params), params)); // 查询分页数据
return R.ok().put("data", page); return R.ok().put("data", page);
} }
/** /**
* *
* @param id ID
* @return ID
*/ */
@RequestMapping("/info/{id}") @RequestMapping("/info/{id}") // 用于获取指定ID的配置信息
public R info(@PathVariable("id") String id){ public R info(@PathVariable("id") String id) {
ConfigEntity config = configService.selectById(id); ConfigEntity config = configService.selectById(id); // 根据ID查询配置
return R.ok().put("data", config); return R.ok().put("data", config);
} }
/** /**
* *
* @param id ID
* @return ID
*/ */
@IgnoreAuth @IgnoreAuth // 忽略身份验证
@RequestMapping("/detail/{id}") @RequestMapping("/detail/{id}") // 用于获取指定ID的配置信息详情
public R detail(@PathVariable("id") String id){ public R detail(@PathVariable("id") String id) {
ConfigEntity config = configService.selectById(id); ConfigEntity config = configService.selectById(id); // 根据ID查询配置
return R.ok().put("data", config); return R.ok().put("data", config);
} }
/** /**
* name * name
* @param name
* @return
*/ */
@RequestMapping("/info") @RequestMapping("/info") // 用于根据名称获取配置信息
public R infoByName(@RequestParam String name){ public R infoByName(@RequestParam String name) {
ConfigEntity config = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile")); ConfigEntity config = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile")); // 根据名称查询配置
return R.ok().put("data", config); return R.ok().put("data", config);
} }
/** /**
* *
* @param config
* @return
*/ */
@PostMapping("/save") @PostMapping("/save") // 用于保存配置
public R save(@RequestBody ConfigEntity config){ public R save(@RequestBody ConfigEntity config) {
// ValidatorUtils.validateEntity(config); // ValidatorUtils.validateEntity(config); // 验证配置实体(注释掉此行可以在需要时启用)
configService.insert(config); configService.insert(config); // 保存配置
return R.ok(); return R.ok();
} }
/** /**
* *
* @param config
* @return
*/ */
@RequestMapping("/update") @RequestMapping("/update") // 用于修改配置
public R update(@RequestBody ConfigEntity config){ public R update(@RequestBody ConfigEntity config) {
// ValidatorUtils.validateEntity(config); // ValidatorUtils.validateEntity(config); // 验证配置实体(注释掉此行可以在需要时启用)
configService.updateById(config);//全部更新 configService.updateById(config); // 根据ID更新配置
return R.ok(); return R.ok();
} }
/** /**
* *
* @param ids ID
* @return
*/ */
@RequestMapping("/delete") @RequestMapping("/delete") // 用于删除配置
public R delete(@RequestBody Long[] ids){ public R delete(@RequestBody Long[] ids) {
configService.deleteBatchIds(Arrays.asList(ids)); configService.deleteBatchIds(Arrays.asList(ids)); // 批量删除配置
return R.ok(); return R.ok();
} }
} }

@ -7,84 +7,103 @@ import java.util.Date;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired; // 导入Spring的依赖注入注解
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController; // 导入Spring的REST控制器注解
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile; // 导入Spring的文件上传接口
import com.annotation.IgnoreAuth; import com.annotation.IgnoreAuth; // 导入自定义注解,表示忽略身份验证
import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.EntityWrapper; // 导入MyBatis-Plus的EntityWrapper用于构建查询条件
import com.entity.ConfigEntity; import com.entity.ConfigEntity;
import com.entity.EIException; import com.entity.EIException;
import com.service.ConfigService; import com.service.ConfigService;
import com.utils.R; import com.utils.R;
/** /**
* *
*/ */
@RestController @RestController // 标记该类为REST控制器
@RequestMapping("file") @RequestMapping("file") // 设置基本请求路径为"/file"
@SuppressWarnings({"unchecked","rawtypes"}) @SuppressWarnings({"unchecked","rawtypes"}) // 忽略编译警告
public class FileController{ public class FileController {
@Autowired
@Autowired // 自动注入ConfigService服务
private ConfigService configService; private ConfigService configService;
/**
*
*/
@RequestMapping("/upload")
@IgnoreAuth
public R upload(@RequestParam("file") MultipartFile file, String type,HttpServletRequest request) throws Exception {
if (file.isEmpty()) {
throw new EIException("上传文件不能为空");
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
String fileName = new Date().getTime()+"."+fileExt;
File dest = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);
file.transferTo(dest);
/**
* 使ideaeclipse
* "D:\\ssmpiv99\\src\\main\\webapp\\upload"upload
*
*/
//FileUtils.copyFile(dest, new File("D:\\ssmpiv99\\src\\main\\webapp\\upload"+"/"+fileName)); /**修改了路径以后请将该行最前面的//注释去掉**/
if(StringUtils.isNotBlank(type) && type.equals("1")) {
ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
if(configEntity==null) {
configEntity = new ConfigEntity();
configEntity.setName("faceFile");
configEntity.setValue(fileName);
} else {
configEntity.setValue(fileName);
}
configService.insertOrUpdate(configEntity);
}
return R.ok().put("file", fileName);
}
/**
*
*/
@IgnoreAuth
@RequestMapping("/download")
public void download(@RequestParam String fileName, HttpServletRequest request, HttpServletResponse response) {
try {
File file = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);
if (file.exists()) {
response.reset();
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName+"\"");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setContentType("application/octet-stream; charset=UTF-8");
IOUtils.write(FileUtils.readFileToByteArray(file), response.getOutputStream());
}
} catch (IOException e) { /**
e.printStackTrace(); *
} * @param file
} * @param type
* @param request HttpServletRequest
* @return
*/
@RequestMapping("/upload") // 映射请求路径为"/upload"
@IgnoreAuth // 忽略身份验证
public R upload(@RequestParam("file") MultipartFile file, String type, HttpServletRequest request) throws Exception {
// 检查上传的文件是否为空
if (file.isEmpty()) {
throw new EIException("上传文件不能为空");
}
// 获取文件扩展名
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
String fileName = new Date().getTime() + "." + fileExt;
// 定义文件保存的目标路径
File dest = new File(request.getSession().getServletContext().getRealPath("/upload") + "/" + fileName);
file.transferTo(dest);
/**
* 使IDEAEclipse
*
* "D:\\ssmpiv99\\src\\main\\webapp\\upload"upload
*
*/
// FileUtils.copyFile(dest, new File("D:\\ssmpiv99\\src\\main\\webapp\\upload" + "/" + fileName)); /** 修改了路径后请将该行最前面的//注释去掉 **/
// 如果type不为空且等于"1",则更新或保存配置信息
if (StringUtils.isNotBlank(type) && type.equals("1")) {
ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
if (configEntity == null) {
configEntity = new ConfigEntity(); // 创建新的配置实体
configEntity.setName("faceFile");
configEntity.setValue(fileName);
} else {
configEntity.setValue(fileName);
}
configService.insertOrUpdate(configEntity); // 保存或更新配置
}
return R.ok().put("file", fileName); // 返回上传结果,包含文件名
}
/**
*
* @param fileName
* @param request HttpServletRequest
* @param response HttpServletResponse
*/
@IgnoreAuth // 忽略身份验证
@RequestMapping("/download") // 映射请求路径为"/download"
public void download(@RequestParam String fileName, HttpServletRequest request, HttpServletResponse response) {
try {
// 定义文件的完整路径
File file = new File(request.getSession().getServletContext().getRealPath("/upload") + "/" + fileName);
// 检查文件是否存在
if (file.exists()) {
response.reset(); // 重置响应
// 设置响应头,指示文件下载
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setContentType("application/octet-stream; charset=UTF-8"); // 设置内容类型
// 将文件内容写入响应输出流
IOUtils.write(FileUtils.readFileToByteArray(file), response.getOutputStream());
}
} catch (IOException e) {
e.printStackTrace(); // 打印异常信息
}
}
} }

@ -1,42 +1,42 @@
package com.controller; package com.controller;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.text.ParseException; import java.text.ParseException; // 导入解析异常
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays; // 导入Arrays工具类
import java.util.Calendar; import java.util.Calendar;
import java.util.Map; import java.util.Map; // 导入Map接口
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator; // 导入迭代器接口
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest; // 导入Servlet请求类
import java.io.IOException; import java.io.IOException;
import com.utils.ValidatorUtils; import com.utils.ValidatorUtils; // 导入验证工具类
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils; // 导入Apache Commons Lang的StringUtils类用于字符串操作
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired; // 导入Spring的依赖注入注解
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable; // 导入路径变量注解
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody; // 导入请求体注解
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解
import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth; import com.annotation.IgnoreAuth;
import com.entity.ForumEntity; import com.entity.ForumEntity; // 导入论坛实体类
import com.entity.view.ForumView; import com.entity.view.ForumView; // 导入论坛视图类
import com.service.ForumService; import com.service.ForumService; // 导入论坛服务类
import com.service.TokenService; import com.service.TokenService;
import com.utils.PageUtils; import com.utils.PageUtils; // 导入分页工具类
import com.utils.R; import com.utils.R;
import com.utils.MD5Util; import com.utils.MD5Util;
import com.utils.MPUtil; import com.utils.MPUtil; // 导入MyBatis-Plus工具类
import com.utils.CommonUtil; import com.utils.CommonUtil;
/** /**
@ -46,217 +46,238 @@ import com.utils.CommonUtil;
* @email * @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
@RestController @RestController // 标记该类为REST控制器
@RequestMapping("/forum") @RequestMapping("/forum")
public class ForumController { public class ForumController {
@Autowired @Autowired
private ForumService forumService; private ForumService forumService; // 注入论坛服务
/** /**
* *
* @param params
* @param forum
* @param request HttpServletRequest
* @return
*/ */
@RequestMapping("/page") @RequestMapping("/page") // 映射请求路径为"/page"
public R page(@RequestParam Map<String, Object> params,ForumEntity forum, public R page(@RequestParam Map<String, Object> params, ForumEntity forum, HttpServletRequest request) {
HttpServletRequest request){ // 如果当前用户不是管理员则设置用户ID
if(!request.getSession().getAttribute("role").toString().equals("管理员")) { if (!request.getSession().getAttribute("role").toString().equals("管理员")) {
forum.setUserid((Long)request.getSession().getAttribute("userId")); forum.setUserid((Long) request.getSession().getAttribute("userId"));
} }
EntityWrapper<ForumEntity> ew = new EntityWrapper<ForumEntity>(); EntityWrapper<ForumEntity> ew = new EntityWrapper<ForumEntity>();
// 查询论坛列表分页数据
PageUtils page = forumService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, forum), params), params)); PageUtils page = forumService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, forum), params), params));
request.setAttribute("data", page); request.setAttribute("data", page); // 将数据设置到请求属性中
return R.ok().put("data", page); return R.ok().put("data", page);
} }
/** /**
* *
* @param params
* @param forum
* @param request HttpServletRequest
* @return
*/ */
@RequestMapping("/list") @RequestMapping("/list") // 映射请求路径为"/list"
public R list(@RequestParam Map<String, Object> params,ForumEntity forum, public R list(@RequestParam Map<String, Object> params, ForumEntity forum, HttpServletRequest request) {
HttpServletRequest request){ // 如果当前用户不是管理员则设置用户ID
if(!request.getSession().getAttribute("role").toString().equals("管理员")) { if (!request.getSession().getAttribute("role").toString().equals("管理员")) {
forum.setUserid((Long)request.getSession().getAttribute("userId")); forum.setUserid((Long) request.getSession().getAttribute("userId"));
} }
EntityWrapper<ForumEntity> ew = new EntityWrapper<ForumEntity>(); EntityWrapper<ForumEntity> ew = new EntityWrapper<ForumEntity>();
// 查询论坛列表分页数据
PageUtils page = forumService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, forum), params), params)); PageUtils page = forumService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, forum), params), params));
request.setAttribute("data", page); request.setAttribute("data", page); // 将数据设置到请求属性中
return R.ok().put("data", page); return R.ok().put("data", page);
} }
/** /**
* * 访
* @param params
* @param forum
* @param request HttpServletRequest
* @return
*/ */
@IgnoreAuth @IgnoreAuth // 忽略身份验证
@RequestMapping("/flist") @RequestMapping("/flist") // 映射请求路径为"/flist"
public R flist(@RequestParam Map<String, Object> params,ForumEntity forum, HttpServletRequest request){ public R flist(@RequestParam Map<String, Object> params, ForumEntity forum, HttpServletRequest request) {
EntityWrapper<ForumEntity> ew = new EntityWrapper<ForumEntity>(); EntityWrapper<ForumEntity> ew = new EntityWrapper<ForumEntity>();
PageUtils page = forumService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, forum), params), params)); // 查询论坛列表分页数据
return R.ok().put("data", page); PageUtils page = forumService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, forum), params), params));
return R.ok().put("data", page);
} }
/** /**
* *
* @param forum
* @return
*/ */
@RequestMapping("/query") @RequestMapping("/query") // 映射请求路径为"/query"
public R query(ForumEntity forum){ public R query(ForumEntity forum) {
EntityWrapper< ForumEntity> ew = new EntityWrapper< ForumEntity>(); EntityWrapper<ForumEntity> ew = new EntityWrapper<ForumEntity>();
ew.allEq(MPUtil.allEQMapPre( forum, "forum")); ew.allEq(MPUtil.allEQMapPre(forum, "forum")); // 构建查询条件
ForumView forumView = forumService.selectView(ew); ForumView forumView = forumService.selectView(ew); // 查询论坛视图
return R.ok("查询论坛表成功").put("data", forumView); return R.ok("查询论坛表成功").put("data", forumView);
} }
/** /**
* *
* @param id ID
* @return
*/ */
@RequestMapping("/info/{id}") @RequestMapping("/info/{id}") // 映射请求路径为"/info/{id}"
public R info(@PathVariable("id") Long id){ public R info(@PathVariable("id") Long id) {
ForumEntity forum = forumService.selectById(id); ForumEntity forum = forumService.selectById(id); // 根据ID查询论坛
return R.ok().put("data", forum); return R.ok().put("data", forum);
} }
/** /**
* *
* @param id ID
* @return
*/ */
@IgnoreAuth @IgnoreAuth // 忽略身份验证
@RequestMapping("/detail/{id}") @RequestMapping("/detail/{id}") // 映射请求路径为"/detail/{id}"
public R detail(@PathVariable("id") Long id){ public R detail(@PathVariable("id") Long id) {
ForumEntity forum = forumService.selectById(id); ForumEntity forum = forumService.selectById(id); // 根据ID查询论坛
return R.ok().put("data", forum); return R.ok().put("data", forum);
} }
/** /**
* *
* @param id ID
* @return
*/ */
@IgnoreAuth @IgnoreAuth // 忽略身份验证
@RequestMapping("/list/{id}") @RequestMapping("/list/{id}") // 映射请求路径为"/list/{id}"
public R list(@PathVariable("id") String id){ public R list(@PathVariable("id") String id) {
ForumEntity forum = forumService.selectById(id); ForumEntity forum = forumService.selectById(id); // 根据ID查询论坛
getChilds(forum); getChilds(forum); // 获取子项
return R.ok().put("data", forum); return R.ok().put("data", forum); // 返回论坛信息及子项
} }
private ForumEntity getChilds(ForumEntity forum) { /**
List<ForumEntity> childs = new ArrayList<ForumEntity>(); *
childs = forumService.selectList(new EntityWrapper<ForumEntity>().eq("parentid", forum.getId())); * @param forum
if(childs == null || childs.size()==0) { * @return
return null; */
} private ForumEntity getChilds(ForumEntity forum) {
forum.setChilds(childs); List<ForumEntity> childs = new ArrayList<ForumEntity>();
for(ForumEntity forumEntity : childs) { childs = forumService.selectList(new EntityWrapper<ForumEntity>().eq("parentid", forum.getId())); // 根据父ID查询子项
getChilds(forumEntity); if (childs == null || childs.size() == 0) {
} return null; // 如果没有子项则返回null
return forum; }
forum.setChilds(childs); // 设置子项
for (ForumEntity forumEntity : childs) {
getChilds(forumEntity); // 递归获取每个子项的子项
}
return forum; // 返回具有子项的论坛
} }
/** /**
* *
* @param forum
* @param request HttpServletRequest
* @return
*/ */
@RequestMapping("/save") @RequestMapping("/save") // 映射请求路径为"/save"
public R save(@RequestBody ForumEntity forum, HttpServletRequest request){ public R save(@RequestBody ForumEntity forum, HttpServletRequest request) {
forum.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue()); forum.setId(new Date().getTime() + new Double(Math.floor(Math.random() * 1000)).longValue()); // 生成唯一ID
//ValidatorUtils.validateEntity(forum); // ValidatorUtils.validateEntity(forum); // 验证实体(可选择启用)
forum.setUserid((Long)request.getSession().getAttribute("userId")); forum.setUserid((Long) request.getSession().getAttribute("userId")); // 设置用户ID
forumService.insert(forum); // 保存论坛信息
forumService.insert(forum);
return R.ok(); return R.ok();
} }
/** /**
* *
* @param forum
* @param request HttpServletRequest
* @return
*/ */
@RequestMapping("/add") @RequestMapping("/add") // 映射请求路径为"/add"
public R add(@RequestBody ForumEntity forum, HttpServletRequest request){ public R add(@RequestBody ForumEntity forum, HttpServletRequest request) {
forum.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue()); forum.setId(new Date().getTime() + new Double(Math.floor(Math.random() * 1000)).longValue()); // 生成唯一ID
//ValidatorUtils.validateEntity(forum); // ValidatorUtils.validateEntity(forum); // 验证实体(可选择启用)
forum.setUserid((Long)request.getSession().getAttribute("userId")); forum.setUserid((Long) request.getSession().getAttribute("userId")); // 设置用户ID
forumService.insert(forum); // 保存论坛信息
forumService.insert(forum); return R.ok();
return R.ok();
} }
/** /**
* *
* @param forum
* @param request HttpServletRequest
* @return
*/ */
@RequestMapping("/update") @RequestMapping("/update") // 映射请求路径为"/update"
@Transactional @Transactional // 开启事务
public R update(@RequestBody ForumEntity forum, HttpServletRequest request){ public R update(@RequestBody ForumEntity forum, HttpServletRequest request) {
//ValidatorUtils.validateEntity(forum); // ValidatorUtils.validateEntity(forum); // 验证实体(可选择启用)
forumService.updateById(forum);//全部更新 forumService.updateById(forum); // 更新论坛信息
return R.ok(); return R.ok();
} }
/** /**
* *
* @param ids ID
* @return
*/ */
@RequestMapping("/delete") @RequestMapping("/delete") // 映射请求路径为"/delete"
public R delete(@RequestBody Long[] ids){ public R delete(@RequestBody Long[] ids) {
forumService.deleteBatchIds(Arrays.asList(ids)); forumService.deleteBatchIds(Arrays.asList(ids)); // 批量删除论坛
return R.ok(); return R.ok();
} }
/** /**
* *
* @param columnName
* @param type
* @param map
* @param request HttpServletRequest
* @return
*/ */
@RequestMapping("/remind/{columnName}/{type}") @RequestMapping("/remind/{columnName}/{type}") // 映射请求路径为"/remind/{columnName}/{type}"
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) { @PathVariable("type") String type, @RequestParam Map<String, Object> map) {
map.put("column", columnName); map.put("column", columnName); // 将列名放入请求参数
map.put("type", type); map.put("type", type); // 将类型放入请求参数
if(type.equals("2")) { // 如果类型为2进行日期提醒处理
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (type.equals("2")) {
Calendar c = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date remindStartDate = null; Calendar c = Calendar.getInstance();
Date remindEndDate = null; Date remindStartDate = null;
if(map.get("remindstart")!=null) { Date remindEndDate = null;
Integer remindStart = Integer.parseInt(map.get("remindstart").toString()); if (map.get("remindstart") != null) {
c.setTime(new Date()); Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.add(Calendar.DAY_OF_MONTH,remindStart); c.setTime(new Date());
remindStartDate = c.getTime(); c.add(Calendar.DAY_OF_MONTH, remindStart); // 加上提醒天数
map.put("remindstart", sdf.format(remindStartDate)); remindStartDate = c.getTime();
} map.put("remindstart", sdf.format(remindStartDate)); // 格式化日期并放入请求参数
if(map.get("remindend")!=null) { }
Integer remindEnd = Integer.parseInt(map.get("remindend").toString()); if (map.get("remindend") != null) {
c.setTime(new Date()); Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.add(Calendar.DAY_OF_MONTH,remindEnd); c.setTime(new Date());
remindEndDate = c.getTime(); c.add(Calendar.DAY_OF_MONTH, remindEnd); // 加上提醒天数
map.put("remindend", sdf.format(remindEndDate)); remindEndDate = c.getTime();
} map.put("remindend", sdf.format(remindEndDate)); // 格式化日期并放入请求参数
} }
}
Wrapper<ForumEntity> wrapper = new EntityWrapper<ForumEntity>();
if(map.get("remindstart")!=null) { // 构建查询条件
wrapper.ge(columnName, map.get("remindstart")); Wrapper<ForumEntity> wrapper = new EntityWrapper<ForumEntity>();
} if (map.get("remindstart") != null) {
if(map.get("remindend")!=null) { wrapper.ge(columnName, map.get("remindstart")); // 大于等于开始日期
wrapper.le(columnName, map.get("remindend")); }
} if (map.get("remindend") != null) {
wrapper.le(columnName, map.get("remindend")); // 小于等于结束日期
}
int count = forumService.selectCount(wrapper);
return R.ok().put("count", count); int count = forumService.selectCount(wrapper); // 查询数量
} return R.ok().put("count", count); // 返回数量
}
} }

@ -1,43 +1,43 @@
package com.controller; package com.controller;
import java.math.BigDecimal; import java.math.BigDecimal; // 导入BigDecimal以处理高精度数值
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Calendar; import java.util.Calendar;
import java.util.Map; import java.util.Map;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator; // 导入迭代器接口
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List; // 导入List接口
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
import com.utils.ValidatorUtils; import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils; // 导入Apache Commons Lang的字符串处理类
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam; // 导入请求参数注解
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.EntityWrapper; // 导入MyBatis-Plus的EntityWrapper用于构建查询条件
import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.mapper.Wrapper; // 导入MyBatis-Plus的Wrapper接口
import com.annotation.IgnoreAuth; import com.annotation.IgnoreAuth;
import com.entity.LeixingEntity; import com.entity.LeixingEntity;
import com.entity.view.LeixingView; import com.entity.view.LeixingView; // 导入类型视图类
import com.service.LeixingService; import com.service.LeixingService; // 导入类型服务类
import com.service.TokenService; import com.service.TokenService;
import com.utils.PageUtils; import com.utils.PageUtils; // 导入分页工具类
import com.utils.R; import com.utils.R; // 导入响应工具类
import com.utils.MD5Util; import com.utils.MD5Util;
import com.utils.MPUtil; import com.utils.MPUtil; // 导入MyBatis-Plus工具类
import com.utils.CommonUtil; import com.utils.CommonUtil;
/** /**
* *
@ -46,185 +46,201 @@ import com.utils.CommonUtil;
* @email * @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
@RestController @RestController // 标记该类为REST控制器
@RequestMapping("/leixing") @RequestMapping("/leixing") // 设置基本请求路径为"/leixing"
public class LeixingController { public class LeixingController {
@Autowired @Autowired
private LeixingService leixingService; private LeixingService leixingService; // 自动注入类型服务
/** /**
* *
* @param params
* @param leixing
* @param request HttpServletRequest
* @return
*/ */
@RequestMapping("/page") @RequestMapping("/page") // 映射请求路径为"/page"
public R page(@RequestParam Map<String, Object> params,LeixingEntity leixing, public R page(@RequestParam Map<String, Object> params, LeixingEntity leixing,
HttpServletRequest request){ HttpServletRequest request) {
EntityWrapper<LeixingEntity> ew = new EntityWrapper<LeixingEntity>(); EntityWrapper<LeixingEntity> ew = new EntityWrapper<LeixingEntity>(); // 创建查询条件
PageUtils page = leixingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, leixing), params), params)); // 查询分页数据
request.setAttribute("data", page); PageUtils page = leixingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, leixing), params), params));
return R.ok().put("data", page); request.setAttribute("data", page); // 将数据设置到请求属性中
return R.ok().put("data", page);
} }
/** /**
* *
* @param params
* @param leixing
* @param request HttpServletRequest
* @return
*/ */
@IgnoreAuth @IgnoreAuth // 忽略身份验证
@RequestMapping("/list") @RequestMapping("/list") // 映射请求路径为"/list"
public R list(@RequestParam Map<String, Object> params,LeixingEntity leixing, public R list(@RequestParam Map<String, Object> params, LeixingEntity leixing,
HttpServletRequest request){ HttpServletRequest request) {
EntityWrapper<LeixingEntity> ew = new EntityWrapper<LeixingEntity>(); EntityWrapper<LeixingEntity> ew = new EntityWrapper<LeixingEntity>(); // 创建查询条件
PageUtils page = leixingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, leixing), params), params)); // 查询分页数据
request.setAttribute("data", page); PageUtils page = leixingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, leixing), params), params));
return R.ok().put("data", page); request.setAttribute("data", page); // 将数据设置到请求属性中
return R.ok().put("data", page);
} }
/** /**
* *
* @param leixing
* @return
*/ */
@RequestMapping("/lists") @RequestMapping("/lists") // 映射请求路径为"/lists"
public R list( LeixingEntity leixing){ public R list(LeixingEntity leixing) {
EntityWrapper<LeixingEntity> ew = new EntityWrapper<LeixingEntity>(); EntityWrapper<LeixingEntity> ew = new EntityWrapper<LeixingEntity>(); // 创建查询条件
ew.allEq(MPUtil.allEQMapPre( leixing, "leixing")); ew.allEq(MPUtil.allEQMapPre(leixing, "leixing")); // 设置查询条件
return R.ok().put("data", leixingService.selectListView(ew)); return R.ok().put("data", leixingService.selectListView(ew));
} }
/** /**
* *
* @param leixing
* @return
*/ */
@RequestMapping("/query") @RequestMapping("/query") // 映射请求路径为"/query"
public R query(LeixingEntity leixing){ public R query(LeixingEntity leixing) {
EntityWrapper< LeixingEntity> ew = new EntityWrapper< LeixingEntity>(); EntityWrapper<LeixingEntity> ew = new EntityWrapper<LeixingEntity>(); // 创建查询条件
ew.allEq(MPUtil.allEQMapPre( leixing, "leixing")); ew.allEq(MPUtil.allEQMapPre(leixing, "leixing")); // 设置查询条件
LeixingView leixingView = leixingService.selectView(ew); LeixingView leixingView = leixingService.selectView(ew); // 查询类型视图
return R.ok("查询类型成功").put("data", leixingView); return R.ok("查询类型成功").put("data", leixingView);
} }
/** /**
* *
* @param id ID
* @return
*/ */
@RequestMapping("/info/{id}") @RequestMapping("/info/{id}") // 映射请求路径为"/info/{id}"
public R info(@PathVariable("id") Long id){ public R info(@PathVariable("id") Long id) {
LeixingEntity leixing = leixingService.selectById(id); LeixingEntity leixing = leixingService.selectById(id); // 根据ID查询类型
return R.ok().put("data", leixing); return R.ok().put("data", leixing);
} }
/** /**
* *
* @param id ID
* @return
*/ */
@IgnoreAuth @IgnoreAuth // 忽略身份验证
@RequestMapping("/detail/{id}") @RequestMapping("/detail/{id}") // 映射请求路径为"/detail/{id}"
public R detail(@PathVariable("id") Long id){ public R detail(@PathVariable("id") Long id) {
LeixingEntity leixing = leixingService.selectById(id); LeixingEntity leixing = leixingService.selectById(id); // 根据ID查询类型
return R.ok().put("data", leixing); return R.ok().put("data", leixing);
} }
/** /**
* *
* @param leixing
* @param request HttpServletRequest
* @return
*/ */
@RequestMapping("/save") @RequestMapping("/save") // 映射请求路径为"/save"
public R save(@RequestBody LeixingEntity leixing, HttpServletRequest request){ public R save(@RequestBody LeixingEntity leixing, HttpServletRequest request) {
leixing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue()); leixing.setId(new Date().getTime() + new Double(Math.floor(Math.random() * 1000)).longValue()); // 生成唯一ID
//ValidatorUtils.validateEntity(leixing); // ValidatorUtils.validateEntity(leixing); // 验证实体(可选择启用)
leixingService.insert(leixing); leixingService.insert(leixing); // 保存类型信息
return R.ok(); return R.ok();
} }
/** /**
* *
* @param leixing
* @param request HttpServletRequest
* @return
*/ */
@RequestMapping("/add") @RequestMapping("/add") // 映射请求路径为"/add"
public R add(@RequestBody LeixingEntity leixing, HttpServletRequest request){ public R add(@RequestBody LeixingEntity leixing, HttpServletRequest request) {
leixing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue()); leixing.setId(new Date().getTime() + new Double(Math.floor(Math.random() * 1000)).longValue()); // 生成唯一ID
//ValidatorUtils.validateEntity(leixing); // ValidatorUtils.validateEntity(leixing); // 验证实体(可选择启用)
leixingService.insert(leixing); leixingService.insert(leixing); // 保存类型信息
return R.ok(); return R.ok();
} }
/** /**
* *
* @param leixing
* @param request HttpServletRequest
* @return
*/ */
@RequestMapping("/update") @RequestMapping("/update") // 映射请求路径为"/update"
@Transactional @Transactional // 开启事务
public R update(@RequestBody LeixingEntity leixing, HttpServletRequest request){ public R update(@RequestBody LeixingEntity leixing, HttpServletRequest request) {
//ValidatorUtils.validateEntity(leixing); // ValidatorUtils.validateEntity(leixing); // 验证实体(可选择启用)
leixingService.updateById(leixing);//全部更新 leixingService.updateById(leixing); // 更新类型信息
return R.ok(); return R.ok();
} }
/** /**
* *
* @param ids ID
* @return
*/ */
@RequestMapping("/delete") @RequestMapping("/delete") // 映射请求路径为"/delete"
public R delete(@RequestBody Long[] ids){ public R delete(@RequestBody Long[] ids) {
leixingService.deleteBatchIds(Arrays.asList(ids)); leixingService.deleteBatchIds(Arrays.asList(ids)); // 批量删除类型
return R.ok(); return R.ok();
} }
/** /**
* *
* @param columnName
* @param type
* @param map
* @param request HttpServletRequest
* @return
*/ */
@RequestMapping("/remind/{columnName}/{type}") @RequestMapping("/remind/{columnName}/{type}") // 映射请求路径为"/remind/{columnName}/{type}"
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) { @PathVariable("type") String type, @RequestParam Map<String, Object> map) {
map.put("column", columnName); map.put("column", columnName); // 将列名放入请求参数
map.put("type", type); map.put("type", type); // 将类型放入请求参数
if(type.equals("2")) { // 如果类型为2进行日期提醒处理
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (type.equals("2")) {
Calendar c = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date remindStartDate = null; Calendar c = Calendar.getInstance();
Date remindEndDate = null; Date remindStartDate = null;
if(map.get("remindstart")!=null) { Date remindEndDate = null;
Integer remindStart = Integer.parseInt(map.get("remindstart").toString()); // 处理提醒开始时间
c.setTime(new Date()); if (map.get("remindstart") != null) {
c.add(Calendar.DAY_OF_MONTH,remindStart); Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
remindStartDate = c.getTime(); c.setTime(new Date());
map.put("remindstart", sdf.format(remindStartDate)); c.add(Calendar.DAY_OF_MONTH, remindStart); // 添加提醒天数
} remindStartDate = c.getTime(); // 获取新的开始日期
if(map.get("remindend")!=null) { map.put("remindstart", sdf.format(remindStartDate)); // 格式化并放入请求参数
Integer remindEnd = Integer.parseInt(map.get("remindend").toString()); }
c.setTime(new Date()); // 处理提醒结束时间
c.add(Calendar.DAY_OF_MONTH,remindEnd); if (map.get("remindend") != null) {
remindEndDate = c.getTime(); Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
map.put("remindend", sdf.format(remindEndDate)); c.setTime(new Date());
} c.add(Calendar.DAY_OF_MONTH, remindEnd); // 添加提醒天数
} remindEndDate = c.getTime(); // 获取新的结束日期
map.put("remindend", sdf.format(remindEndDate)); // 格式化并放入请求参数
Wrapper<LeixingEntity> wrapper = new EntityWrapper<LeixingEntity>(); }
if(map.get("remindstart")!=null) { }
wrapper.ge(columnName, map.get("remindstart"));
} // 构建查询条件
if(map.get("remindend")!=null) { Wrapper<LeixingEntity> wrapper = new EntityWrapper<LeixingEntity>();
wrapper.le(columnName, map.get("remindend")); if (map.get("remindstart") != null) {
} wrapper.ge(columnName, map.get("remindstart")); // 大于等于开始日期
}
if (map.get("remindend") != null) {
int count = leixingService.selectCount(wrapper); wrapper.le(columnName, map.get("remindend")); // 小于等于结束日期
return R.ok().put("count", count); }
}
int count = leixingService.selectCount(wrapper); // 查询数量
return R.ok().put("count", count); // 返回数量
}
} }

@ -1,36 +1,28 @@
package com.controller; package com.controller;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Calendar; import java.util.Calendar;
import java.util.Map; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth; import com.annotation.IgnoreAuth;
import com.entity.WenjuandafuEntity; import com.entity.WenjuandafuEntity;
import com.entity.view.WenjuandafuView; import com.entity.view.WenjuandafuView;
import com.service.WenjuandafuService; import com.service.WenjuandafuService;
import com.service.TokenService; import com.service.TokenService;
import com.utils.PageUtils; import com.utils.PageUtils;
@ -40,11 +32,7 @@ import com.utils.MPUtil;
import com.utils.CommonUtil; import com.utils.CommonUtil;
/** /**
* *
*
* @author
* @email
* @date 2023-02-21 09:46:06
*/ */
@RestController @RestController
@RequestMapping("/wenjuandafu") @RequestMapping("/wenjuandafu")
@ -52,66 +40,57 @@ public class WenjuandafuController {
@Autowired @Autowired
private WenjuandafuService wenjuandafuService; private WenjuandafuService wenjuandafuService;
/** /**
* *
* @param params
* @param wenjuandafu
* @param request HTTP
* @return
*/ */
@RequestMapping("/page") @RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,WenjuandafuEntity wenjuandafu, public R page(@RequestParam Map<String, Object> params, WenjuandafuEntity wenjuandafu, HttpServletRequest request){
HttpServletRequest request){ String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
String tableName = request.getSession().getAttribute("tableName").toString(); wenjuandafu.setZhanghao((String)request.getSession().getAttribute("username"));
if(tableName.equals("yonghu")) { }
wenjuandafu.setZhanghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<WenjuandafuEntity> ew = new EntityWrapper<WenjuandafuEntity>(); EntityWrapper<WenjuandafuEntity> ew = new EntityWrapper<WenjuandafuEntity>();
PageUtils page = wenjuandafuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenjuandafu), params), params));
PageUtils page = wenjuandafuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenjuandafu), params), params)); request.setAttribute("data", page);
request.setAttribute("data", page);
return R.ok().put("data", page); return R.ok().put("data", page);
} }
/** /**
* *
* @param params
* @param wenjuandafu
* @param request HTTP
* @return
*/ */
@IgnoreAuth @IgnoreAuth
@RequestMapping("/list") @RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,WenjuandafuEntity wenjuandafu, public R list(@RequestParam Map<String, Object> params, WenjuandafuEntity wenjuandafu, HttpServletRequest request){
HttpServletRequest request){
EntityWrapper<WenjuandafuEntity> ew = new EntityWrapper<WenjuandafuEntity>(); EntityWrapper<WenjuandafuEntity> ew = new EntityWrapper<WenjuandafuEntity>();
PageUtils page = wenjuandafuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenjuandafu), params), params));
PageUtils page = wenjuandafuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenjuandafu), params), params)); request.setAttribute("data", page);
request.setAttribute("data", page);
return R.ok().put("data", page); return R.ok().put("data", page);
} }
/** /**
* *
* @param wenjuandafu
* @return
*/ */
@RequestMapping("/lists") @RequestMapping("/lists")
public R list( WenjuandafuEntity wenjuandafu){ public R lists(WenjuandafuEntity wenjuandafu){
EntityWrapper<WenjuandafuEntity> ew = new EntityWrapper<WenjuandafuEntity>(); EntityWrapper<WenjuandafuEntity> ew = new EntityWrapper<WenjuandafuEntity>();
ew.allEq(MPUtil.allEQMapPre( wenjuandafu, "wenjuandafu")); ew.allEq(MPUtil.allEQMapPre( wenjuandafu, "wenjuandafu"));
return R.ok().put("data", wenjuandafuService.selectListView(ew)); return R.ok().put("data", wenjuandafuService.selectListView(ew));
} }
/**
*
*/
@RequestMapping("/query")
public R query(WenjuandafuEntity wenjuandafu){
EntityWrapper< WenjuandafuEntity> ew = new EntityWrapper< WenjuandafuEntity>();
ew.allEq(MPUtil.allEQMapPre( wenjuandafu, "wenjuandafu"));
WenjuandafuView wenjuandafuView = wenjuandafuService.selectView(ew);
return R.ok("查询问卷答复成功").put("data", wenjuandafuView);
}
/** /**
* *
* @param id ID
* @return
*/ */
@RequestMapping("/info/{id}") @RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){ public R info(@PathVariable("id") Long id){
@ -120,112 +99,126 @@ public class WenjuandafuController {
} }
/** /**
* *
* @param id ID
* @return
*/ */
@IgnoreAuth @IgnoreAuth
@RequestMapping("/detail/{id}") @RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){ public R detail(@PathVariable("id") Long id){
WenjuandafuEntity wenjuandafu = wenjuandafuService.selectById(id); WenjuandafuEntity wenjuandafu = wenjuandafuService.selectById(id);
return R.ok().put("data", wenjuandafu); return R.ok().put("data", wenjuandafu);
} }
/** /**
* *
* @param wenjuandafu
* @param request HTTP
* @return
*/ */
@RequestMapping("/save") @RequestMapping("/save")
public R save(@RequestBody WenjuandafuEntity wenjuandafu, HttpServletRequest request){ public R save(@RequestBody WenjuandafuEntity wenjuandafu, HttpServletRequest request){
wenjuandafu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue()); wenjuandafu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(wenjuandafu); //ValidatorUtils.validateEntity(wenjuandafu); // 验证实体对象(注释掉)
wenjuandafuService.insert(wenjuandafu); wenjuandafuService.insert(wenjuandafu);
return R.ok(); return R.ok();
} }
/** /**
* *
* @param wenjuandafu
* @param request HTTP
* @return
*/ */
@RequestMapping("/add") @RequestMapping("/add")
public R add(@RequestBody WenjuandafuEntity wenjuandafu, HttpServletRequest request){ public R add(@RequestBody WenjuandafuEntity wenjuandafu, HttpServletRequest request){
wenjuandafu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue()); wenjuandafu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(wenjuandafu); //ValidatorUtils.validateEntity(wenjuandafu); // 验证实体对象(注释掉)
wenjuandafuService.insert(wenjuandafu); wenjuandafuService.insert(wenjuandafu);
return R.ok(); return R.ok();
} }
/** /**
* *
* @param wenjuandafu
* @param request HTTP
* @return
*/ */
@RequestMapping("/update") @RequestMapping("/update")
@Transactional @Transactional
public R update(@RequestBody WenjuandafuEntity wenjuandafu, HttpServletRequest request){ public R update(@RequestBody WenjuandafuEntity wenjuandafu, HttpServletRequest request){
//ValidatorUtils.validateEntity(wenjuandafu); //ValidatorUtils.validateEntity(wenjuandafu); // 验证实体对象(注释掉)
wenjuandafuService.updateById(wenjuandafu);//全部更新 wenjuandafuService.updateById(wenjuandafu); //更新全部字段
return R.ok(); return R.ok();
} }
/** /**
* *
* @param ids ID
* @return
*/ */
@RequestMapping("/delete") @RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){ public R delete(@RequestBody Long[] ids){
wenjuandafuService.deleteBatchIds(Arrays.asList(ids)); wenjuandafuService.deleteBatchIds(Arrays.asList(ids));
return R.ok(); return R.ok();
} }
/** /**
* *
* @param columnName
* @param type 2
* @param request HTTP
* @param map
* @return
*/ */
@RequestMapping("/remind/{columnName}/{type}") @RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, public R remindCount(@PathVariable("columnName") String columnName, @PathVariable("type") String type, HttpServletRequest request, @RequestParam Map<String, Object> map) {
@PathVariable("type") String type,@RequestParam Map<String, Object> map) { map.put("column", columnName);
map.put("column", columnName); map.put("type", type);
map.put("type", type);
if(type.equals("2")) { // 如果类型是日期范围
if(type.equals("2")) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); // 获取当前日期实例
Calendar c = Calendar.getInstance(); //初始话开始和结束日期
Date remindStartDate = null; Date remindStartDate = null;
Date remindEndDate = null; Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString()); if(map.get("remindstart") != null) { // 如果请求参数中包含开始日期
c.setTime(new Date()); Integer remindStart = Integer.parseInt(map.get("remindstart").toString()); // 获取开始日期天数差值
c.add(Calendar.DAY_OF_MONTH,remindStart); c.setTime(new Date()); // 设置当前日期时间
remindStartDate = c.getTime(); c.add(Calendar.DAY_OF_MONTH, remindStart); // 根据天数差值计算开始日期
map.put("remindstart", sdf.format(remindStartDate)); remindStartDate = c.getTime();
} map.put("remindstart", sdf.format(remindStartDate)); // 将开始日期格式化并放入请求参数中
if(map.get("remindend")!=null) { }
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date()); if(map.get("remindend") != null) { // 如果请求参数中包含结束日期
c.add(Calendar.DAY_OF_MONTH,remindEnd); Integer remindEnd = Integer.parseInt(map.get("remindend").toString()); // 获取结束日期天数差值
remindEndDate = c.getTime(); c.setTime(new Date()); // 设置当前日期时间
map.put("remindend", sdf.format(remindEndDate)); c.add(Calendar.DAY_OF_MONTH, remindEnd);
} remindEndDate = c.getTime(); // 获取计算后的结束日期
} map.put("remindend", sdf.format(remindEndDate)); // 将结束日期格式化并放入请求参数中
}
Wrapper<WenjuandafuEntity> wrapper = new EntityWrapper<WenjuandafuEntity>(); }
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart")); String tableName = request.getSession().getAttribute("tableName").toString(); // 获取表名
} if(tableName.equals("yonghu")) { // 如果表名是用户表
if(map.get("remindend")!=null) { map.put("zhanghao", (String)request.getSession().getAttribute("username")); // 添加用户名到请求参数中作为过滤条件
wrapper.le(columnName, map.get("remindend")); }
}
Wrapper<WenjuandafuEntity> wrapper = new EntityWrapper<WenjuandafuEntity>(); // 创建查询包装器实例
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) { if(map.get("remindstart") != null) {
wrapper.eq("zhanghao", (String)request.getSession().getAttribute("username")); wrapper.ge(columnName, map.get("remindstart")); // 添加大于等于开始日期的条件到查询包装器中
} }
if(map.get("remindend") != null) {
int count = wenjuandafuService.selectCount(wrapper); wrapper.le(columnName, map.get("remindend"));
return R.ok().put("count", count); }
}
int count = wenjuandafuService.selectCount(wrapper); // 根据查询包装器统计符合条件的记录数
return R.ok().put("count", count); // 返回符合条件的记录数响应
}
}
@ -235,94 +228,136 @@ public class WenjuandafuController {
/** /**
* *
*/ */
@RequestMapping("/value/{xColumnName}/{yColumnName}") @RequestMapping("/value/{xColumnName}/{yColumnName}")
public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName,HttpServletRequest request) { public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, HttpServletRequest request) {
Map<String, Object> params = new HashMap<String, Object>(); // 创建参数映射,用于存储请求中的列名
params.put("xColumn", xColumnName); Map<String, Object> params = new HashMap<String, Object>();
params.put("yColumn", yColumnName); params.put("xColumn", xColumnName);
EntityWrapper<WenjuandafuEntity> ew = new EntityWrapper<WenjuandafuEntity>(); params.put("yColumn", yColumnName);
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) { // 创建实体包装器,用于构建查询条件
ew.eq("zhanghao", (String)request.getSession().getAttribute("username")); EntityWrapper<WenjuandafuEntity> ew = new EntityWrapper<WenjuandafuEntity>();
}
List<Map<String, Object>> result = wenjuandafuService.selectValue(params, ew); // 获取当前会话中的表名
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String tableName = request.getSession().getAttribute("tableName").toString();
for(Map<String, Object> m : result) {
for(String k : m.keySet()) { // 如果表名为"yonghu",则添加用户账号作为查询条件
if(m.get(k) instanceof Date) { if (tableName.equals("yonghu")) {
m.put(k, sdf.format((Date)m.get(k))); ew.eq("zhanghao", (String) request.getSession().getAttribute("username"));
}
}
}
return R.ok().put("data", result);
} }
/** // 调用服务层方法进行数据查询
* List<Map<String, Object>> result = wenjuandafuService.selectValue(params, ew);
*/
@RequestMapping("/value/{xColumnName}/{yColumnName}/{timeStatType}") // 格式化日期对象为字符串
public R valueDay(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType,HttpServletRequest request) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Map<String, Object> params = new HashMap<String, Object>(); for (Map<String, Object> m : result) {
params.put("xColumn", xColumnName); for (String k : m.keySet()) {
params.put("yColumn", yColumnName); if (m.get(k) instanceof Date) {
params.put("timeStatType", timeStatType); m.put(k, sdf.format((Date) m.get(k)));
EntityWrapper<WenjuandafuEntity> ew = new EntityWrapper<WenjuandafuEntity>();
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
ew.eq("zhanghao", (String)request.getSession().getAttribute("username"));
}
List<Map<String, Object>> result = wenjuandafuService.selectTimeStatValue(params, ew);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(Map<String, Object> m : result) {
for(String k : m.keySet()) {
if(m.get(k) instanceof Date) {
m.put(k, sdf.format((Date)m.get(k)));
}
} }
} }
return R.ok().put("data", result);
} }
/** // 返回封装好的响应结果
* return R.ok().put("data", result);
*/ }
@RequestMapping("/group/{columnName}")
public R group(@PathVariable("columnName") String columnName,HttpServletRequest request) { /**
Map<String, Object> params = new HashMap<String, Object>(); *
params.put("column", columnName); */
EntityWrapper<WenjuandafuEntity> ew = new EntityWrapper<WenjuandafuEntity>(); @RequestMapping("/value/{xColumnName}/{yColumnName}/{timeStatType}")
String tableName = request.getSession().getAttribute("tableName").toString(); public R valueDay(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType, HttpServletRequest request) {
if(tableName.equals("yonghu")) { // 创建参数映射,用于存储请求中的列名和时间统计类型
ew.eq("zhanghao", (String)request.getSession().getAttribute("username")); Map<String, Object> params = new HashMap<String, Object>();
} params.put("xColumn", xColumnName);
List<Map<String, Object>> result = wenjuandafuService.selectGroup(params, ew); params.put("yColumn", yColumnName);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); params.put("timeStatType", timeStatType);
for(Map<String, Object> m : result) {
for(String k : m.keySet()) { // 创建实体包装器,用于构建查询条件
if(m.get(k) instanceof Date) { EntityWrapper<WenjuandafuEntity> ew = new EntityWrapper<WenjuandafuEntity>();
m.put(k, sdf.format((Date)m.get(k)));
} // 获取当前会话中的表名
String tableName = request.getSession().getAttribute("tableName").toString();
// 如果表名为"yonghu",则添加用户账号作为查询条件
if (tableName.equals("yonghu")) {
ew.eq("zhanghao", (String) request.getSession().getAttribute("username"));
}
// 调用服务层方法进行数据查询
List<Map<String, Object>> result = wenjuandafuService.selectTimeStatValue(params, ew);
// 格式化日期对象为字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (Map<String, Object> m : result) {
for (String k : m.keySet()) {
if (m.get(k) instanceof Date) {
m.put(k, sdf.format((Date) m.get(k)));
} }
} }
return R.ok().put("data", result);
} }
// 返回封装好的响应结果
return R.ok().put("data", result);
}
/**
*
*/
@RequestMapping("/group/{columnName}")
public R group(@PathVariable("columnName") String columnName, HttpServletRequest request) {
// 创建参数映射,用于存储请求中的列名
Map<String, Object> params = new HashMap<String, Object>();
params.put("column", columnName);
// 创建实体包装器,用于构建查询条件
EntityWrapper<WenjuandafuEntity> ew = new EntityWrapper<WenjuandafuEntity>();
/** // 获取当前会话中的表名
* String tableName = request.getSession().getAttribute("tableName").toString();
*/
@RequestMapping("/count") // 如果表名为"yonghu",则添加用户账号作为查询条件
public R count(@RequestParam Map<String, Object> params,WenjuandafuEntity wenjuandafu, HttpServletRequest request){ if (tableName.equals("yonghu")) {
String tableName = request.getSession().getAttribute("tableName").toString(); ew.eq("zhanghao", (String) request.getSession().getAttribute("username"));
if(tableName.equals("yonghu")) { }
wenjuandafu.setZhanghao((String)request.getSession().getAttribute("username"));
// 调用服务层方法进行数据查询
List<Map<String, Object>> result = wenjuandafuService.selectGroup(params, ew);
// 格式化日期对象为字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (Map<String, Object> m : result) {
for (String k : m.keySet()) {
if (m.get(k) instanceof Date) {
m.put(k, sdf.format((Date) m.get(k)));
}
} }
EntityWrapper<WenjuandafuEntity> ew = new EntityWrapper<WenjuandafuEntity>();
int count = wenjuandafuService.selectCount(MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenjuandafu), params), params));
return R.ok().put("data", count);
} }
// 返回封装好的响应结果
return R.ok().put("data", result);
}
/**
*
*/
@RequestMapping("/count")
public R count(@RequestParam Map<String, Object> params, WenjuandafuEntity wenjuandafu, HttpServletRequest request) {
// 获取当前会话中的表名
String tableName = request.getSession().getAttribute("tableName").toString();
// 如果表名为"yonghu",则添加用户账号作为查询条件
if (tableName.equals("yonghu")) {
wenjuandafu.setZhanghao((String) request.getSession().getAttribute("username"));
}
// 创建实体包装器,用于构建查询条件
EntityWrapper<WenjuandafuEntity> ew = new EntityWrapper<WenjuandafuEntity>();
// 调用服务层方法进行数据查询并计算总数
int count = wenjuandafuService.selectCount(MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenjuandafu), params), params));
// 返回封装好的响应结果
return R.ok().put("data", count);
} }

@ -52,331 +52,240 @@ import com.entity.StoreupEntity;
@RequestMapping("/wenjuandiaocha") @RequestMapping("/wenjuandiaocha")
public class WenjuandiaochaController { public class WenjuandiaochaController {
@Autowired @Autowired
private WenjuandiaochaService wenjuandiaochaService; private WenjuandiaochaService wenjuandiaochaService; // 注入问卷调查服务
@Autowired @Autowired
private StoreupService storeupService; private StoreupService storeupService; // 注入收藏服务
/** /**
* *
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,WenjuandiaochaEntity wenjuandiaocha,
HttpServletRequest request){
EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>();
PageUtils page = wenjuandiaochaService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenjuandiaocha), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
*
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,WenjuandiaochaEntity wenjuandiaocha,
HttpServletRequest request){
EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>();
PageUtils page = wenjuandiaochaService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenjuandiaocha), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
*
*/ */
@RequestMapping("/lists") @RequestMapping("/remind/{columnName}/{type}")
public R list( WenjuandiaochaEntity wenjuandiaocha){ public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>(); @PathVariable("type") String type, @RequestParam Map<String, Object> map) {
ew.allEq(MPUtil.allEQMapPre( wenjuandiaocha, "wenjuandiaocha")); // 将列名和类型添加到 map 中
return R.ok().put("data", wenjuandiaochaService.selectListView(ew)); map.put("column", columnName);
} map.put("type", type);
// 如果类型为 "2",处理日期范围
if (type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 定义日期格式
Calendar c = Calendar.getInstance(); // 获取当前日期时间
Date remindStartDate = null;
Date remindEndDate = null;
// 处理 remindstart 参数
if (map.get("remindstart") != null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString()); // 将 remindstart 转换为整数
c.setTime(new Date()); // 设置当前时间
c.add(Calendar.DAY_OF_MONTH, remindStart); // 添加 remindStart 天
remindStartDate = c.getTime(); // 获取新的开始日期
map.put("remindstart", sdf.format(remindStartDate)); // 格式化并添加到 map 中
}
// 处理 remindend 参数
if (map.get("remindend") != null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString()); // 将 remindend 转换为整数
c.setTime(new Date()); // 设置当前时间
c.add(Calendar.DAY_OF_MONTH, remindEnd); // 添加 remindEnd 天
remindEndDate = c.getTime(); // 获取新的结束日期
map.put("remindend", sdf.format(remindEndDate)); // 格式化并添加到 map 中
}
}
// 创建 EntityWrapper 对象,用于构建查询条件
Wrapper<WenjuandiaochaEntity> wrapper = new EntityWrapper<WenjuandiaochaEntity>();
if (map.get("remindstart") != null) {
wrapper.ge(columnName, map.get("remindstart")); // 大于等于 remindstart
}
if (map.get("remindend") != null) {
wrapper.le(columnName, map.get("remindend")); // 小于等于 remindend
}
/** // 查询符合条件的记录数
* int count = wenjuandiaochaService.selectCount(wrapper);
*/ return R.ok().put("count", count); // 返回记录数
@RequestMapping("/query")
public R query(WenjuandiaochaEntity wenjuandiaocha){
EntityWrapper< WenjuandiaochaEntity> ew = new EntityWrapper< WenjuandiaochaEntity>();
ew.allEq(MPUtil.allEQMapPre( wenjuandiaocha, "wenjuandiaocha"));
WenjuandiaochaView wenjuandiaochaView = wenjuandiaochaService.selectView(ew);
return R.ok("查询问卷调查成功").put("data", wenjuandiaochaView);
} }
/** /**
*
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
WenjuandiaochaEntity wenjuandiaocha = wenjuandiaochaService.selectById(id);
wenjuandiaocha.setClicktime(new Date());
wenjuandiaochaService.updateById(wenjuandiaocha);
return R.ok().put("data", wenjuandiaocha);
}
/**
*
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
WenjuandiaochaEntity wenjuandiaocha = wenjuandiaochaService.selectById(id);
wenjuandiaocha.setClicktime(new Date());
wenjuandiaochaService.updateById(wenjuandiaocha);
return R.ok().put("data", wenjuandiaocha);
}
/**
*
*/
@RequestMapping("/save")
public R save(@RequestBody WenjuandiaochaEntity wenjuandiaocha, HttpServletRequest request){
wenjuandiaocha.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(wenjuandiaocha);
wenjuandiaochaService.insert(wenjuandiaocha);
return R.ok();
}
/**
*
*/
@RequestMapping("/add")
public R add(@RequestBody WenjuandiaochaEntity wenjuandiaocha, HttpServletRequest request){
wenjuandiaocha.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(wenjuandiaocha);
wenjuandiaochaService.insert(wenjuandiaocha);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@Transactional
public R update(@RequestBody WenjuandiaochaEntity wenjuandiaocha, HttpServletRequest request){
//ValidatorUtils.validateEntity(wenjuandiaocha);
wenjuandiaochaService.updateById(wenjuandiaocha);//全部更新
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
wenjuandiaochaService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
*
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<WenjuandiaochaEntity> wrapper = new EntityWrapper<WenjuandiaochaEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = wenjuandiaochaService.selectCount(wrapper);
return R.ok().put("count", count);
}
/**
* *
*/ */
@IgnoreAuth @IgnoreAuth // 忽略认证
@RequestMapping("/autoSort") @RequestMapping("/autoSort")
public R autoSort(@RequestParam Map<String, Object> params,WenjuandiaochaEntity wenjuandiaocha, HttpServletRequest request,String pre){ public R autoSort(@RequestParam Map<String, Object> params, WenjuandiaochaEntity wenjuandiaocha, HttpServletRequest request, String pre) {
// 创建 EntityWrapper 对象,用于构建查询条件
EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>(); EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>();
Map<String, Object> newMap = new HashMap<String, Object>(); Map<String, Object> newMap = new HashMap<String, Object>();
Map<String, Object> param = new HashMap<String, Object>(); Map<String, Object> param = new HashMap<String, Object>();
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator(); Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
while (it.hasNext()) { while (it.hasNext()) {
Map.Entry<String, Object> entry = it.next(); Map.Entry<String, Object> entry = it.next();
String key = entry.getKey(); String key = entry.getKey();
String newKey = entry.getKey(); String newKey = entry.getKey();
if (pre.endsWith(".")) {
newMap.put(pre + newKey, entry.getValue()); // 处理 pre 参数
} else if (StringUtils.isEmpty(pre)) { if (pre.endsWith(".")) {
newMap.put(newKey, entry.getValue()); newMap.put(pre + newKey, entry.getValue());
} else { } else if (StringUtils.isEmpty(pre)) {
newMap.put(pre + "." + newKey, entry.getValue()); newMap.put(newKey, entry.getValue());
} } else {
} newMap.put(pre + "." + newKey, entry.getValue());
params.put("sort", "clicktime"); }
}
// 设置排序条件
params.put("sort", "clicktime");
params.put("order", "desc"); params.put("order", "desc");
PageUtils page = wenjuandiaochaService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenjuandiaocha), params), params));
return R.ok().put("data", page); // 查询分页数据
PageUtils page = wenjuandiaochaService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenjuandiaocha), params), params));
return R.ok().put("data", page); // 返回分页数据
} }
/** /**
* *
*/ */
@RequestMapping("/autoSort2") @RequestMapping("/autoSort2")
public R autoSort2(@RequestParam Map<String, Object> params,WenjuandiaochaEntity wenjuandiaocha, HttpServletRequest request){ public R autoSort2(@RequestParam Map<String, Object> params, WenjuandiaochaEntity wenjuandiaocha, HttpServletRequest request) {
// 获取用户 ID
String userId = request.getSession().getAttribute("userId").toString(); String userId = request.getSession().getAttribute("userId").toString();
String inteltypeColumn = "leixing"; String inteltypeColumn = "leixing"; // 定义智能类型列名
List<StoreupEntity> storeups = storeupService.selectList(new EntityWrapper<StoreupEntity>().eq("type", 1).eq("userid", userId).eq("tablename", "wenjuandiaocha").orderBy("addtime", false)); List<StoreupEntity> storeups = storeupService.selectList(new EntityWrapper<StoreupEntity>().eq("type", 1).eq("userid", userId).eq("tablename", "wenjuandiaocha").orderBy("addtime", false));
List<String> inteltypes = new ArrayList<String>(); List<String> inteltypes = new ArrayList<String>();
Integer limit = params.get("limit")==null?10:Integer.parseInt(params.get("limit").toString()); Integer limit = params.get("limit") == null ? 10 : Integer.parseInt(params.get("limit").toString()); // 设置限制数量,默认为 10
List<WenjuandiaochaEntity> wenjuandiaochaList = new ArrayList<WenjuandiaochaEntity>(); List<WenjuandiaochaEntity> wenjuandiaochaList = new ArrayList<WenjuandiaochaEntity>();
//去重
if(storeups!=null && storeups.size()>0) { // 去重
for(StoreupEntity s : storeups) { if (storeups != null && storeups.size() > 0) {
for (StoreupEntity s : storeups) {
wenjuandiaochaList.addAll(wenjuandiaochaService.selectList(new EntityWrapper<WenjuandiaochaEntity>().eq(inteltypeColumn, s.getInteltype()))); wenjuandiaochaList.addAll(wenjuandiaochaService.selectList(new EntityWrapper<WenjuandiaochaEntity>().eq(inteltypeColumn, s.getInteltype())));
} }
} }
// 创建 EntityWrapper 对象,用于构建查询条件
EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>(); EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>();
params.put("sort", "id"); params.put("sort", "id");
params.put("order", "desc"); params.put("order", "desc");
// 查询分页数据
PageUtils page = wenjuandiaochaService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenjuandiaocha), params), params)); PageUtils page = wenjuandiaochaService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenjuandiaocha), params), params));
List<WenjuandiaochaEntity> pageList = (List<WenjuandiaochaEntity>)page.getList(); List<WenjuandiaochaEntity> pageList = (List<WenjuandiaochaEntity>) page.getList();
if(wenjuandiaochaList.size()<limit) {
int toAddNum = (limit-wenjuandiaochaList.size())<=pageList.size()?(limit-wenjuandiaochaList.size()):pageList.size(); // 如果结果数量小于限制数量,则从分页数据中添加
for(WenjuandiaochaEntity o1 : pageList) { if (wenjuandiaochaList.size() < limit) {
int toAddNum = (limit - wenjuandiaochaList.size()) <= pageList.size() ? (limit - wenjuandiaochaList.size()) : pageList.size();
for (WenjuandiaochaEntity o1 : pageList) {
boolean addFlag = true; boolean addFlag = true;
for(WenjuandiaochaEntity o2 : wenjuandiaochaList) { for (WenjuandiaochaEntity o2 : wenjuandiaochaList) {
if(o1.getId().intValue()==o2.getId().intValue()) { if (o1.getId().intValue() == o2.getId().intValue()) {
addFlag = false; addFlag = false;
break; break;
} }
} }
if(addFlag) { if (addFlag) {
wenjuandiaochaList.add(o1); wenjuandiaochaList.add(o1);
if(--toAddNum==0) break; if (--toAddNum == 0) break;
} }
} }
} else if(wenjuandiaochaList.size()>limit) { } else if (wenjuandiaochaList.size() > limit) {
wenjuandiaochaList = wenjuandiaochaList.subList(0, limit); wenjuandiaochaList = wenjuandiaochaList.subList(0, limit); // 如果结果数量大于限制数量,则截取前 limit 个
} }
page.setList(wenjuandiaochaList);
return R.ok().put("data", page); page.setList(wenjuandiaochaList); // 设置新的列表
return R.ok().put("data", page); // 返回分页数据
} }
/** /**
* *
*/ */
@RequestMapping("/value/{xColumnName}/{yColumnName}") @RequestMapping("/value/{xColumnName}/{yColumnName}")
public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName,HttpServletRequest request) { public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, HttpServletRequest request) {
Map<String, Object> params = new HashMap<String, Object>(); Map<String, Object> params = new HashMap<String, Object>();
params.put("xColumn", xColumnName); params.put("xColumn", xColumnName);
params.put("yColumn", yColumnName); params.put("yColumn", yColumnName);
// 创建 EntityWrapper 对象,用于构建查询条件
EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>(); EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>();
// 查询统计结果
List<Map<String, Object>> result = wenjuandiaochaService.selectValue(params, ew); List<Map<String, Object>> result = wenjuandiaochaService.selectValue(params, ew);
// 处理日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(Map<String, Object> m : result) { for (Map<String, Object> m : result) {
for(String k : m.keySet()) { for (String k : m.keySet()) {
if(m.get(k) instanceof Date) { if (m.get(k) instanceof Date) {
m.put(k, sdf.format((Date)m.get(k))); m.put(k, sdf.format((Date) m.get(k)));
} }
} }
} }
return R.ok().put("data", result); return R.ok().put("data", result); // 返回统计结果
} }
/** /**
* *
*/ */
@RequestMapping("/value/{xColumnName}/{yColumnName}/{timeStatType}") @RequestMapping("/value/{xColumnName}/{yColumnName}/{timeStatType}")
public R valueDay(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType,HttpServletRequest request) { public R valueDay(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType, HttpServletRequest request) {
Map<String, Object> params = new HashMap<String, Object>(); Map<String, Object> params = new HashMap<String, Object>();
params.put("xColumn", xColumnName); params.put("xColumn", xColumnName);
params.put("yColumn", yColumnName); params.put("yColumn", yColumnName);
params.put("timeStatType", timeStatType); params.put("timeStatType", timeStatType);
// 创建 EntityWrapper 对象,用于构建查询条件
EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>(); EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>();
// 查询时间统计结果
List<Map<String, Object>> result = wenjuandiaochaService.selectTimeStatValue(params, ew); List<Map<String, Object>> result = wenjuandiaochaService.selectTimeStatValue(params, ew);
// 处理日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(Map<String, Object> m : result) { for (Map<String, Object> m : result) {
for(String k : m.keySet()) { for (String k : m.keySet()) {
if(m.get(k) instanceof Date) { if (m.get(k) instanceof Date) {
m.put(k, sdf.format((Date)m.get(k))); m.put(k, sdf.format((Date) m.get(k)));
} }
} }
} }
return R.ok().put("data", result); return R.ok().put("data", result); // 返回时间统计结果
} }
/** /**
* *
*/ */
@RequestMapping("/group/{columnName}") @RequestMapping("/group/{columnName}")
public R group(@PathVariable("columnName") String columnName,HttpServletRequest request) { public R group(@PathVariable("columnName") String columnName, HttpServletRequest request) {
Map<String, Object> params = new HashMap<String, Object>(); Map<String, Object> params = new HashMap<String, Object>();
params.put("column", columnName); params.put("column", columnName);
// 创建 EntityWrapper 对象,用于构建查询条件
EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>(); EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>();
// 查询分组统计结果
List<Map<String, Object>> result = wenjuandiaochaService.selectGroup(params, ew); List<Map<String, Object>> result = wenjuandiaochaService.selectGroup(params, ew);
// 处理日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(Map<String, Object> m : result) { for (Map<String, Object> m : result) {
for(String k : m.keySet()) { for (String k : m.keySet()) {
if(m.get(k) instanceof Date) { if (m.get(k) instanceof Date) {
m.put(k, sdf.format((Date)m.get(k))); m.put(k, sdf.format((Date) m.get(k)));
} }
} }
} }
return R.ok().put("data", result); return R.ok().put("data", result); // 返回分组统计结果
} }
/** /**
* *
*/ */
@RequestMapping("/count") @RequestMapping("/count")
public R count(@RequestParam Map<String, Object> params,WenjuandiaochaEntity wenjuandiaocha, HttpServletRequest request){ public R count(@RequestParam Map<String, Object> params, WenjuandiaochaEntity wenjuandiaocha, HttpServletRequest request) {
// 创建 EntityWrapper 对象,用于构建查询条件
EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>(); EntityWrapper<WenjuandiaochaEntity> ew = new EntityWrapper<WenjuandiaochaEntity>();
// 查询符合条件的记录数
int count = wenjuandiaochaService.selectCount(MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenjuandiaocha), params), params)); int count = wenjuandiaochaService.selectCount(MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenjuandiaocha), params), params));
return R.ok().put("data", count); return R.ok().put("data", count); // 返回记录数
} }
} }

@ -21,9 +21,9 @@ import com.entity.view.ChatView;
*/ */
public interface ChatDao extends BaseMapper<ChatEntity> { public interface ChatDao extends BaseMapper<ChatEntity> {
List<ChatVO> selectListVO(@Param("ew") Wrapper<ChatEntity> wrapper); List<ChatVO> selectListVO(@Param("ew") Wrapper<ChatEntity> wrapper);//根据给定的条件包装器Wrapper查询并返回符合条件的ChatVO列表
ChatVO selectVO(@Param("ew") Wrapper<ChatEntity> wrapper); ChatVO selectVO(@Param("ew") Wrapper<ChatEntity> wrapper);//根据给定的条件包装器Wrapper查询并返回符合条件的ChatView列表
List<ChatView> selectListView(@Param("ew") Wrapper<ChatEntity> wrapper); List<ChatView> selectListView(@Param("ew") Wrapper<ChatEntity> wrapper);

@ -5,24 +5,69 @@ import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* *
*/ */
public interface CommonDao{ public interface CommonDao {
List<String> getOption(Map<String, Object> params);
/**
Map<String, Object> getFollowByOption(Map<String, Object> params); *
* @param params
List<String> getFollowByOption2(Map<String, Object> params); * @return
*/
void sh(Map<String, Object> params); List<String> getOption(Map<String, Object> params);
int remindCount(Map<String, Object> params); /**
*
Map<String, Object> selectCal(Map<String, Object> params); * @param params
* @return
List<Map<String, Object>> selectGroup(Map<String, Object> params); */
Map<String, Object> getFollowByOption(Map<String, Object> params);
List<Map<String, Object>> selectValue(Map<String, Object> params);
/**
List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params); *
* @param params
* @return
*/
List<String> getFollowByOption2(Map<String, Object> params);
/**
*
* @param params
*/
void sh(Map<String, Object> params);
/**
*
* @param params
* @return
*/
int remindCount(Map<String, Object> params);
/**
*
* @param params
* @return
*/
Map<String, Object> selectCal(Map<String, Object> params);
/**
*
* @param params
* @return
*/
List<Map<String, Object>> selectGroup(Map<String, Object> params);
/**
*
* @param params
* @return
*/
List<Map<String, Object>> selectValue(Map<String, Object> params);
/**
*
* @param params
* @return
*/
List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params);
} }

@ -1,12 +1,15 @@
package com.dao; package com.dao;
import com.baomidou.mybatisplus.mapper.BaseMapper; import com.baomidou.mybatisplus.mapper.BaseMapper; // 导入MyBatis-Plus的BaseMapper接口
import com.entity.ConfigEntity; import com.entity.ConfigEntity; // 导入配置实体类
/** /**
* * DAO
* 访ConfigEntity
*/ */
public interface ConfigDao extends BaseMapper<ConfigEntity> { public interface ConfigDao extends BaseMapper<ConfigEntity> {
// ConfigDao接口继承了BaseMapper接口意味着它自动获得了CRUD方法
// 可以根据需要在此处添加自定义的方法
} }

@ -1,35 +1,59 @@
package com.dao; package com.dao;
import com.entity.ForumEntity; import com.entity.ForumEntity; // 导入论坛实体类
import com.baomidou.mybatisplus.mapper.BaseMapper; import com.baomidou.mybatisplus.mapper.BaseMapper; // 导入MyBatis-Plus的BaseMapper接口
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination; import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.entity.vo.ForumVO; import com.entity.vo.ForumVO; // 导入论坛VO类
import com.entity.view.ForumView; import com.entity.view.ForumView; // 导入论坛视图类
/** /**
* * DAO
* 访ForumEntity
* *
* @author * @author
* @email * @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
public interface ForumDao extends BaseMapper<ForumEntity> { public interface ForumDao extends BaseMapper<ForumEntity> {
List<ForumVO> selectListVO(@Param("ew") Wrapper<ForumEntity> wrapper); /**
* VO
ForumVO selectVO(@Param("ew") Wrapper<ForumEntity> wrapper); * @param wrapper
* @return VO
List<ForumView> selectListView(@Param("ew") Wrapper<ForumEntity> wrapper); */
List<ForumVO> selectListVO(@Param("ew") Wrapper<ForumEntity> wrapper);
List<ForumView> selectListView(Pagination page,@Param("ew") Wrapper<ForumEntity> wrapper);
/**
ForumView selectView(@Param("ew") Wrapper<ForumEntity> wrapper); * VO
* @param wrapper
* @return VO
*/
ForumVO selectVO(@Param("ew") Wrapper<ForumEntity> wrapper);
/**
*
* @param wrapper
* @return
*/
List<ForumView> selectListView(@Param("ew") Wrapper<ForumEntity> wrapper);
/**
*
* @param page
* @param wrapper
* @return
*/
List<ForumView> selectListView(Pagination page, @Param("ew") Wrapper<ForumEntity> wrapper);
/**
*
* @param wrapper
* @return
*/
ForumView selectView(@Param("ew") Wrapper<ForumEntity> wrapper);
} }

@ -1,35 +1,59 @@
package com.dao; package com.dao;
import com.entity.LeixingEntity; import com.entity.LeixingEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper; import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination; import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.entity.vo.LeixingVO; import com.entity.vo.LeixingVO; // 导入类型VO类
import com.entity.view.LeixingView; import com.entity.view.LeixingView;
/** /**
* * DAO
* LeixingEntity
* *
* @author * @author
* @email * @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
public interface LeixingDao extends BaseMapper<LeixingEntity> { public interface LeixingDao extends BaseMapper<LeixingEntity> {
List<LeixingVO> selectListVO(@Param("ew") Wrapper<LeixingEntity> wrapper); /**
* VO
LeixingVO selectVO(@Param("ew") Wrapper<LeixingEntity> wrapper); * @param wrapper
* @return VO
List<LeixingView> selectListView(@Param("ew") Wrapper<LeixingEntity> wrapper); */
List<LeixingVO> selectListVO(@Param("ew") Wrapper<LeixingEntity> wrapper);
List<LeixingView> selectListView(Pagination page,@Param("ew") Wrapper<LeixingEntity> wrapper);
/**
LeixingView selectView(@Param("ew") Wrapper<LeixingEntity> wrapper); * VO
* @param wrapper
* @return VO
*/
LeixingVO selectVO(@Param("ew") Wrapper<LeixingEntity> wrapper);
/**
*
* @param wrapper
* @return
*/
List<LeixingView> selectListView(@Param("ew") Wrapper<LeixingEntity> wrapper);
/**
*
* @param page
* @param wrapper
* @return
*/
List<LeixingView> selectListView(Pagination page, @Param("ew") Wrapper<LeixingEntity> wrapper);
/**
*
* @param wrapper
* @return
*/
LeixingView selectView(@Param("ew") Wrapper<LeixingEntity> wrapper);
} }

@ -1,4 +1,4 @@
package com.dao; ppackage com.dao;
import com.entity.WenjuandafuEntity; import com.entity.WenjuandafuEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper; import com.baomidou.mybatisplus.mapper.BaseMapper;
@ -11,33 +11,70 @@ import org.apache.ibatis.annotations.Param;
import com.entity.vo.WenjuandafuVO; import com.entity.vo.WenjuandafuVO;
import com.entity.view.WenjuandafuView; import com.entity.view.WenjuandafuView;
/** /**
* * 访
* *
* @author * 使MyBatis-Plus
* @email
* @date 2023-02-21 09:46:06
*/ */
public interface WenjuandafuDao extends BaseMapper<WenjuandafuEntity> { public interface WenjuandafuDao extends BaseMapper<WenjuandafuEntity> {
List<WenjuandafuVO> selectListVO(@Param("ew") Wrapper<WenjuandafuEntity> wrapper); /**
* VO
WenjuandafuVO selectVO(@Param("ew") Wrapper<WenjuandafuEntity> wrapper); * @param wrapper
* @return VO
List<WenjuandafuView> selectListView(@Param("ew") Wrapper<WenjuandafuEntity> wrapper); */
List<WenjuandafuVO> selectListVO(@Param("ew") Wrapper<WenjuandafuEntity> wrapper);
List<WenjuandafuView> selectListView(Pagination page,@Param("ew") Wrapper<WenjuandafuEntity> wrapper);
/**
WenjuandafuView selectView(@Param("ew") Wrapper<WenjuandafuEntity> wrapper); * VO
* @param wrapper
* @return VO
*/
WenjuandafuVO selectVO(@Param("ew") Wrapper<WenjuandafuEntity> wrapper);
/**
*
* @param wrapper
* @return
*/
List<WenjuandafuView> selectListView(@Param("ew") Wrapper<WenjuandafuEntity> wrapper);
/**
*
* @param page
* @param wrapper
* @return
*/
List<WenjuandafuView> selectListView(Pagination page,@Param("ew") Wrapper<WenjuandafuEntity> wrapper);
/**
*
* @param wrapper
* @return
*/
WenjuandafuView selectView(@Param("ew") Wrapper<WenjuandafuEntity> wrapper);
/**
*
* @param params
* @param wrapper
* @return
*/
List<Map<String, Object>> selectValue(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<WenjuandafuEntity> wrapper); List<Map<String, Object>> selectValue(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<WenjuandafuEntity> wrapper);
/**
*
* @param params
* @param wrapper
* @return
*/
List<Map<String, Object>> selectTimeStatValue(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<WenjuandafuEntity> wrapper); List<Map<String, Object>> selectTimeStatValue(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<WenjuandafuEntity> wrapper);
/**
*
* @param params
* @param wrapper
* @return
*/
List<Map<String, Object>> selectGroup(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<WenjuandafuEntity> wrapper); List<Map<String, Object>> selectGroup(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<WenjuandafuEntity> wrapper);
} }

@ -13,31 +13,73 @@ import com.entity.view.WenjuandiaochaView;
/** /**
* * 访
* * BaseMapperCRUD
* @author * @author
* @email * @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
public interface WenjuandiaochaDao extends BaseMapper<WenjuandiaochaEntity> { public interface WenjuandiaochaDao extends BaseMapper<WenjuandiaochaEntity> {
List<WenjuandiaochaVO> selectListVO(@Param("ew") Wrapper<WenjuandiaochaEntity> wrapper);
WenjuandiaochaVO selectVO(@Param("ew") Wrapper<WenjuandiaochaEntity> wrapper);
List<WenjuandiaochaView> selectListView(@Param("ew") Wrapper<WenjuandiaochaEntity> wrapper);
List<WenjuandiaochaView> selectListView(Pagination page,@Param("ew") Wrapper<WenjuandiaochaEntity> wrapper); /**
* WenjuandiaochaVO
WenjuandiaochaView selectView(@Param("ew") Wrapper<WenjuandiaochaEntity> wrapper); * @param ew
* @return VO
*/
List<WenjuandiaochaVO> selectListVO(@Param("ew") Wrapper<WenjuandiaochaEntity> ew);
List<Map<String, Object>> selectValue(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<WenjuandiaochaEntity> wrapper); /**
* WenjuandiaochaVO
* @param ew
* @return VO
*/
WenjuandiaochaVO selectVO(@Param("ew") Wrapper<WenjuandiaochaEntity> ew);
List<Map<String, Object>> selectTimeStatValue(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<WenjuandiaochaEntity> wrapper); /**
* WenjuandiaochaView
List<Map<String, Object>> selectGroup(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<WenjuandiaochaEntity> wrapper); * @param ew
* @return View
*/
List<WenjuandiaochaView> selectListView(@Param("ew") Wrapper<WenjuandiaochaEntity> ew);
/**
* WenjuandiaochaView
* @param page
* @param ew
* @return View
*/
List<WenjuandiaochaView> selectListView(Pagination page, @Param("ew") Wrapper<WenjuandiaochaEntity> ew);
/**
* WenjuandiaochaView
* @param ew
* @return View
*/
WenjuandiaochaView selectView(@Param("ew") Wrapper<WenjuandiaochaEntity> ew);
/**
* Map
* @param params
* @param ew
* @return Map
*/
List<Map<String, Object>> selectValue(@Param("params") Map<String, Object> params, @Param("ew") Wrapper<WenjuandiaochaEntity> ew);
/**
* Map
* @param params
* @param ew
* @return Map
*/
List<Map<String, Object>> selectTimeStatValue(@Param("params") Map<String, Object> params, @Param("ew") Wrapper<WenjuandiaochaEntity> ew);
/**
* Map
* @param params
* @param ew
* @return Map
*/
List<Map<String, Object>> selectGroup(@Param("params") Map<String, Object> params, @Param("ew") Wrapper<WenjuandiaochaEntity> ew);
} }

@ -6,38 +6,37 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination; import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.entity.vo.YonghuVO; import com.entity.vo.YonghuVO;
import com.entity.view.YonghuView; import com.entity.view.YonghuView;
/** /**
* * 访MyBatis-PlusBaseMapper
* * YonghuEntity
* @author
* @email
* @date 2023-02-21 09:46:06
*/ */
public interface YonghuDao extends BaseMapper<YonghuEntity> { public interface YonghuDao extends BaseMapper<YonghuEntity> {
List<YonghuVO> selectListVO(@Param("ew") Wrapper<YonghuEntity> wrapper);
YonghuVO selectVO(@Param("ew") Wrapper<YonghuEntity> wrapper);
List<YonghuView> selectListView(@Param("ew") Wrapper<YonghuEntity> wrapper);
List<YonghuView> selectListView(Pagination page,@Param("ew") Wrapper<YonghuEntity> wrapper);
YonghuView selectView(@Param("ew") Wrapper<YonghuEntity> wrapper);
List<Map<String, Object>> selectValue(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<YonghuEntity> wrapper);
List<Map<String, Object>> selectTimeStatValue(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<YonghuEntity> wrapper);
List<Map<String, Object>> selectGroup(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<YonghuEntity> wrapper); // 根据条件查询用户视图对象列表
List<YonghuVO> selectListVO(@Param("ew") Wrapper<YonghuEntity> wrapper);
// 根据条件查询单个用户视图对象
YonghuVO selectVO(@Param("ew") Wrapper<YonghuEntity> wrapper);
// 根据条件查询用户视图对象列表
List<YonghuView> selectListView(@Param("ew") Wrapper<YonghuEntity> wrapper);
// 根据分页信息和条件查询用户视图对象列表
List<YonghuView> selectListView(Pagination page, @Param("ew") Wrapper<YonghuEntity> wrapper);
// 根据条件查询单个用户视图对象
YonghuView selectView(@Param("ew") Wrapper<YonghuEntity> wrapper);
// 根据参数和条件查询值映射列表
List<Map<String, Object>> selectValue(@Param("params") Map<String, Object> params, @Param("ew") Wrapper<YonghuEntity> wrapper);
// 根据参数和条件查询时间统计值映射列表
List<Map<String, Object>> selectTimeStatValue(@Param("params") Map<String, Object> params, @Param("ew") Wrapper<YonghuEntity> wrapper);
// 根据参数和条件分组查询映射列表
List<Map<String, Object>> selectGroup(@Param("params") Map<String, Object> params, @Param("ew") Wrapper<YonghuEntity> wrapper);
} }

@ -9,25 +9,25 @@ import com.baomidou.mybatisplus.enums.IdType;
/** /**
* : * :
*/ */
@TableName("config") @TableName("config")// 指定该类对应的数据库表名为"config"
public class ConfigEntity implements Serializable{ public class ConfigEntity implements Serializable{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO) // 主键ID使用自增长方式
private Long id; private Long id;
/** /**
* key *
*/ */
private String name; private String name;
/** /**
* value *
*/ */
private String value; private String value;
public Long getId() { public Long getId() {
return id; return id; // 返回配置ID
} }
public void setId(Long id) { public void setId(Long id) {
@ -39,7 +39,7 @@ private static final long serialVersionUID = 1L;
} }
public void setName(String name) { public void setName(String name) {
this.name = name; this.name = name;//设置配置名称
} }
public String getValue() { public String getValue() {
@ -47,7 +47,7 @@ private static final long serialVersionUID = 1L;
} }
public void setValue(String value) { public void setValue(String value) {
this.value = value; this.value = value;// 设置配置值
} }
} }

@ -16,6 +16,8 @@ import java.util.List;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import org.apache.poi.ss.formula.functions.T;
import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.FieldFill; import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType; import com.baomidou.mybatisplus.enums.IdType;
@ -37,14 +39,15 @@ public class ForumEntity<T> implements Serializable {
} }
public ForumEntity(T t) { // 接收ForumEntity对象的构造函数
try { public ForumEntity(T t) {
BeanUtils.copyProperties(this, t); try {
} catch (IllegalAccessException | InvocationTargetException e) { // 复制属性,将传入对象的属性复制到当前对象
// TODO Auto-generated catch block BeanUtils.copyProperties(this, t);
e.printStackTrace(); } catch (IllegalAccessException | InvocationTargetException e) {
} // 异常处理,打印堆栈信息
} e.printStackTrace();
}
/** /**
* id * id
@ -99,10 +102,10 @@ public class ForumEntity<T> implements Serializable {
private Date addtime; private Date addtime;
public Date getAddtime() { public Date getAddtime() {
return addtime; return addtime;// 返回添加时间
} }
public void setAddtime(Date addtime) { public void setAddtime(Date addtime) {
this.addtime = addtime; this.addtime = addtime;// 设置添加时间
} }
public Long getId() { public Long getId() {
@ -110,9 +113,12 @@ public class ForumEntity<T> implements Serializable {
} }
public void setId(Long id) { public void setId(Long id) {
this.id = id; this.id = id;// 设置帖子ID
} }
@TableField(exist = false) /**
*
*/
@TableField(exist = false) // 该字段不在数据库表中存在
private List<ForumEntity> childs; private List<ForumEntity> childs;
public List<ForumEntity> getChilds() { public List<ForumEntity> getChilds() {
@ -120,7 +126,7 @@ public class ForumEntity<T> implements Serializable {
} }
public void setChilds(List<ForumEntity> childs) { public void setChilds(List<ForumEntity> childs) {
this.childs = childs; this.childs = childs;// 设置子帖子
} }
/** /**
* *

@ -16,6 +16,8 @@ import java.util.List;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import org.apache.poi.ss.formula.functions.T;
import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.FieldFill; import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType; import com.baomidou.mybatisplus.enums.IdType;
@ -37,11 +39,13 @@ public class LeixingEntity<T> implements Serializable {
} }
// 接收LeixingEntity对象的构造函数
public LeixingEntity(T t) { public LeixingEntity(T t) {
try { try {
// 复制属性,将传入对象的属性复制到当前对象
BeanUtils.copyProperties(this, t); BeanUtils.copyProperties(this, t);
} catch (IllegalAccessException | InvocationTargetException e) { } catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block // 异常处理,打印堆栈信息
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -58,15 +62,15 @@ public class LeixingEntity<T> implements Serializable {
private String leixing; private String leixing;
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")// 指定JSON格式化
@DateTimeFormat @DateTimeFormat// 用于Spring格式化
private Date addtime; private Date addtime;// 存放添加时间
public Date getAddtime() { public Date getAddtime() {
return addtime; return addtime;
} }
public void setAddtime(Date addtime) { public void setAddtime(Date addtime) {
this.addtime = addtime; this.addtime = addtime;// 设置添加时间
} }
public Long getId() { public Long getId() {
@ -74,7 +78,7 @@ public class LeixingEntity<T> implements Serializable {
} }
public void setId(Long id) { public void setId(Long id) {
this.id = id; this.id = id;// 设置类型ID
} }
/** /**
* *

@ -3,7 +3,6 @@ package com.entity;
import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.annotations.TableName;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@ -11,37 +10,39 @@ import java.lang.reflect.InvocationTargetException;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType;
/** /**
* *
* *
* @author * @author
* @email * @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
@TableName("wenjuandiaocha") @TableName("wenjuandiaocha") // 指定该实体类对应的数据库表名为“wenjuandiaocha”
public class WenjuandiaochaEntity<T> implements Serializable { @JsonIgnoreProperties(ignoreUnknown = true) // 忽略未知属性,防止反序列化时出现错误
private static final long serialVersionUID = 1L; public class WenjuandiaochaEntity<T> implements Serializable { // 实现Serializable接口以支持序列化
private static final long serialVersionUID = 1L; // 序列化版本号
/**
*
*/
public WenjuandiaochaEntity() { public WenjuandiaochaEntity() {
} }
/**
* t
* @param t
*/
public WenjuandiaochaEntity(T t) { public WenjuandiaochaEntity(T t) {
try { try {
BeanUtils.copyProperties(this, t); BeanUtils.copyProperties(this, t); // 使用BeanUtils工具类复制属性
} catch (IllegalAccessException | InvocationTargetException e) { } catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block // 打印堆栈跟踪信息以便调试
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -49,210 +50,274 @@ public class WenjuandiaochaEntity<T> implements Serializable {
/** /**
* id * id
*/ */
@TableId @TableId // 指定该字段为主键
private Long id; private Long id;
/** /**
* *
* 使NotBlank
*/ */
@NotBlank(message = "问卷标题不能为空")
private String wenjuanbiaoti; private String wenjuanbiaoti;
/** /**
* *
* 使NotBlank
*/ */
@NotBlank(message = "封面图片路径不能为空")
private String fengmiantupian; private String fengmiantupian;
/** /**
* *
* 使NotBlank
*/ */
@NotBlank(message = "类型不能为空")
private String leixing; private String leixing;
/** /**
* *
* 使NotBlank
*/ */
@NotBlank(message = "问题一不能为空")
private String wentiyi; private String wentiyi;
/** /**
* *
* 使NotBlank
*/ */
@NotBlank(message = "问题二不能为空")
private String wentier; private String wentier;
/** /**
* *
* 使NotBlank
*/ */
@NotBlank(message = "问题三不能为空")
private String wentisan; private String wentisan;
/** /**
* *
* 使NotBlank
*/ */
@NotBlank(message = "问题四不能为空")
private String wentisi; private String wentisi;
/** /**
* *
* 使NotBlank
*/ */
@NotBlank(message = "问题五不能为空")
private String wentiwu; private String wentiwu;
/** /**
* *
* 使JsonFormatyyyy-MM-dd HH:mm:ss
* 使DateTimeFormatyyyy-MM-dd HH:mm:ss
* 使NotNullnull
*/ */
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat @NotNull(message = "发布日期不能为空")
private Date faburiqi; private Date faburiqi;
/** /**
* *
* 使JsonFormatyyyy-MM-dd HH:mm:ss
* 使DateTimeFormatyyyy-MM-dd HH:mm:ss
*/ */
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date clicktime; private Date clicktime;
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
private Date addtime;
public Date getAddtime() { /**
return addtime; *
} * @param addtime
*/
public void setAddtime(Date addtime) { public void setAddtime(Date addtime) {
this.addtime = addtime; this.addtime = addtime;
} }
public Long getId() { /**
return id; *
* @return
*/
public Date getAddtime() {
return addtime;
} }
/**
* id
* @param id id
*/
public void setId(Long id) { public void setId(Long id) {
this.id = id; this.id = id;
} }
/**
* /**
*/ * id
* @return id
*/
public Long getId() {
return id;
}
/**
*
* @param wenjuanbiaoti
*/
public void setWenjuanbiaoti(String wenjuanbiaoti) { public void setWenjuanbiaoti(String wenjuanbiaoti) {
this.wenjuanbiaoti = wenjuanbiaoti; this.wenjuanbiaoti = wenjuanbiaoti;
} }
/**
* /**
*/ *
* @return
*/
public String getWenjuanbiaoti() { public String getWenjuanbiaoti() {
return wenjuanbiaoti; return wenjuanbiaoti;
} }
/**
* /**
*/ *
* @param fengmiantupian
*/
public void setFengmiantupian(String fengmiantupian) { public void setFengmiantupian(String fengmiantupian) {
this.fengmiantupian = fengmiantupian; this.fengmiantupian = fengmiantupian;
} }
/**
* /**
*/ *
* @return
*/
public String getFengmiantupian() { public String getFengmiantupian() {
return fengmiantupian; return fengmiantupian;
} }
/**
* /**
*/ *
* @param leixing
*/
public void setLeixing(String leixing) { public void setLeixing(String leixing) {
this.leixing = leixing; this.leixing = leixing;
} }
/**
* /**
*/ *
* @return
*/
public String getLeixing() { public String getLeixing() {
return leixing; return leixing;
} }
/**
* /**
*/ *
* @param wentiyi
*/
public void setWentiyi(String wentiyi) { public void setWentiyi(String wentiyi) {
this.wentiyi = wentiyi; this.wentiyi = wentiyi;
} }
/**
* /**
*/ *
* @return
*/
public String getWentiyi() { public String getWentiyi() {
return wentiyi; return wentiyi;
} }
/**
* /**
*/ *
* @param wentier
*/
public void setWentier(String wentier) { public void setWentier(String wentier) {
this.wentier = wentier; this.wentier = wentier;
} }
/**
* /**
*/ *
* @return
*/
public String getWentier() { public String getWentier() {
return wentier; return wentier;
} }
/**
* /**
*/ *
* @param wentisan
*/
public void setWentisan(String wentisan) { public void setWentisan(String wentisan) {
this.wentisan = wentisan; this.wentisan = wentisan;
} }
/**
* /**
*/ *
* @return
*/
public String getWentisan() { public String getWentisan() {
return wentisan; return wentisan;
} }
/**
* /**
*/ *
* @param wentisi
*/
public void setWentisi(String wentisi) { public void setWentisi(String wentisi) {
this.wentisi = wentisi; this.wentisi = wentisi;
} }
/**
* /**
*/ *
* @return
*/
public String getWentisi() { public String getWentisi() {
return wentisi; return wentisi;
} }
/**
* /**
*/ *
* @param wentiwu
*/
public void setWentiwu(String wentiwu) { public void setWentiwu(String wentiwu) {
this.wentiwu = wentiwu; this.wentiwu = wentiwu;
} }
/**
* /**
*/ *
* @return
*/
public String getWentiwu() { public String getWentiwu() {
return wentiwu; return wentiwu;
} }
/**
* /**
*/ *
* @param faburiqi
*/
public void setFaburiqi(Date faburiqi) { public void setFaburiqi(Date faburiqi) {
this.faburiqi = faburiqi; this.faburiqi = faburiqi;
} }
/**
* /**
*/ *
* @return
*/
public Date getFaburiqi() { public Date getFaburiqi() {
return faburiqi; return faburiqi;
} }
/**
* /**
*/ *
* @param clicktime
*/
public void setClicktime(Date clicktime) { public void setClicktime(Date clicktime) {
this.clicktime = clicktime; this.clicktime = clicktime;
} }
/**
* /**
*/ *
* @return
*/
public Date getClicktime() { public Date getClicktime() {
return clicktime; return clicktime;
} }
} }

@ -12,8 +12,6 @@ import java.io.Serializable;
/** /**
* 线 * 线
* *
* entity
* ModelAndView model
* @author * @author
* @email * @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06

@ -1,157 +1,144 @@
package com.entity.model; package com.entity.model;
import com.entity.ForumEntity; import com.entity.ForumEntity;
import java.io.Serializable; // 导入可序列化接口
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/** /**
* *
* *
* entity * entity
* ModelAndView model * ModelAndViewmodel
*
* @author * @author
* @email * @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
public class ForumModel implements Serializable { public class ForumModel implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L; // 版本控制
/** /**
* *
*/ */
private String content; // 存放帖子内容
private String content;
/** /**
* id * id
*/ */
private Long parentid; // 存放父节点ID
private Long parentid;
/** /**
* id * id
*/ */
private Long userid; // 存放用户ID
private Long userid;
/** /**
* *
*/ */
private String username; // 存放用户名
private String username;
/** /**
* *
*/ */
private String avatarurl; // 存放用户头像URL
private String avatarurl;
/** /**
* *
*/ */
private String isdone; // 存放帖子状态(例如:已完成/未完成等)
private String isdone;
/** /**
* *
* @param content
*/ */
public void setContent(String content) { public void setContent(String content) {
this.content = content; this.content = content; // 设置帖子内容
} }
/** /**
* *
* @return
*/ */
public String getContent() { public String getContent() {
return content; return content;
} }
/** /**
* id * id
* @param parentid ID
*/ */
public void setParentid(Long parentid) { public void setParentid(Long parentid) {
this.parentid = parentid; this.parentid = parentid; // 设置父节点ID
} }
/** /**
* id * id
* @return ID
*/ */
public Long getParentid() { public Long getParentid() {
return parentid; return parentid; // 返回父节点ID
} }
/** /**
* id * id
* @param userid ID
*/ */
public void setUserid(Long userid) { public void setUserid(Long userid) {
this.userid = userid; this.userid = userid; // 设置用户ID
} }
/** /**
* id * id
* @return ID
*/ */
public Long getUserid() { public Long getUserid() {
return userid; return userid;
} }
/** /**
* *
* @param username
*/ */
public void setUsername(String username) { public void setUsername(String username) {
this.username = username; this.username = username; // 设置用户名
} }
/** /**
* *
* @return
*/ */
public String getUsername() { public String getUsername() {
return username; return username;
} }
/** /**
* *
* @param avatarurl URL
*/ */
public void setAvatarurl(String avatarurl) { public void setAvatarurl(String avatarurl) {
this.avatarurl = avatarurl; this.avatarurl = avatarurl; // 设置头像URL
} }
/** /**
* *
* @return URL
*/ */
public String getAvatarurl() { public String getAvatarurl() {
return avatarurl; return avatarurl;
} }
/** /**
* *
* @param isdone
*/ */
public void setIsdone(String isdone) { public void setIsdone(String isdone) {
this.isdone = isdone; this.isdone = isdone; // 设置帖子状态
} }
/** /**
* *
* @return
*/ */
public String getIsdone() { public String getIsdone() {
return isdone; return isdone;
} }
} }

@ -19,7 +19,7 @@ import java.io.Serializable;
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
public class LeixingModel implements Serializable { public class LeixingModel implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;// 版本控制
// 可以根据需求定义属性,例如类型的名称、描述等
} }

@ -1,227 +1,195 @@
package com.entity.model; package com.entity.model;
import com.entity.WenjuandiaochaEntity; import com.entity.WenjuandiaochaEntity;
import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date; import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable; import java.io.Serializable;
/** /**
* *
* *
* entity * ModelAndViewmodel
* ModelAndView model * @author
* @author * @email
* @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
public class WenjuandiaochaModel implements Serializable { public class WenjuandiaochaModel implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* *
*/ */
private String fengmiantupian; private String fengmiantupian;
/** /**
* *
*/ */
private String leixing; private String leixing;
/** /**
* *
*/ */
private String wentiyi; private String wentiyi;
/** /**
* *
*/ */
private String wentier; private String wentier;
/** /**
* *
*/ */
private String wentisan; private String wentisan;
/** /**
* *
*/ */
private String wentisi; private String wentisi;
/** /**
* *
*/ */
private String wentiwu; private String wentiwu;
/** /**
* *
*/ */
@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") @DateTimeFormat
@DateTimeFormat
private Date faburiqi; private Date faburiqi;
/** /**
* *
*/ */
@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") @DateTimeFormat
@DateTimeFormat
private Date clicktime; private Date clicktime;
/** /**
* *
*/ */
public void setFengmiantupian(String fengmiantupian) { public void setFengmiantupian(String fengmiantupian) {
this.fengmiantupian = fengmiantupian; this.fengmiantupian = fengmiantupian;
} }
/** /**
* *
*/ */
public String getFengmiantupian() { public String getFengmiantupian() {
return fengmiantupian; return fengmiantupian;
} }
/** /**
* *
*/ */
public void setLeixing(String leixing) { public void setLeixing(String leixing) {
this.leixing = leixing; this.leixing = leixing;
} }
/** /**
* *
*/ */
public String getLeixing() { public String getLeixing() {
return leixing; return leixing;
} }
/** /**
* *
*/ */
public void setWentiyi(String wentiyi) { public void setWentiyi(String wentiyi) {
this.wentiyi = wentiyi; this.wentiyi = wentiyi;
} }
/** /**
* *
*/ */
public String getWentiyi() { public String getWentiyi() {
return wentiyi; return wentiyi;
} }
/** /**
* *
*/ */
public void setWentier(String wentier) { public void setWentier(String wentier) {
this.wentier = wentier; this.wentier = wentier;
} }
/** /**
* *
*/ */
public String getWentier() { public String getWentier() {
return wentier; return wentier;
} }
/** /**
* *
*/ */
public void setWentisan(String wentisan) { public void setWentisan(String wentisan) {
this.wentisan = wentisan; this.wentisan = wentisan;
} }
/** /**
* *
*/ */
public String getWentisan() { public String getWentisan() {
return wentisan; return wentisan;
} }
/** /**
* *
*/ */
public void setWentisi(String wentisi) { public void setWentisi(String wentisi) {
this.wentisi = wentisi; this.wentisi = wentisi;
} }
/** /**
* *
*/ */
public String getWentisi() { public String getWentisi() {
return wentisi; return wentisi;
} }
/** /**
* *
*/ */
public void setWentiwu(String wentiwu) { public void setWentiwu(String wentiwu) {
this.wentiwu = wentiwu; this.wentiwu = wentiwu;
} }
/** /**
* *
*/ */
public String getWentiwu() { public String getWentiwu() {
return wentiwu; return wentiwu;
} }
/** /**
* *
*/ */
public void setFaburiqi(Date faburiqi) { public void setFaburiqi(Date faburiqi) {
this.faburiqi = faburiqi; this.faburiqi = faburiqi;
} }
/** /**
* *
*/ */
public Date getFaburiqi() { public Date getFaburiqi() {
return faburiqi; return faburiqi;
} }
/** /**
* *
*/ */
public void setClicktime(Date clicktime) { public void setClicktime(Date clicktime) {
this.clicktime = clicktime; this.clicktime = clicktime;
} }
/** /**
* *
*/ */
public Date getClicktime() { public Date getClicktime() {
return clicktime; return clicktime;
} }
} }

@ -12,8 +12,7 @@ import java.io.Serializable;
/** /**
* *
* *
* entity * ModelAndView model
* ModelAndView model
* @author * @author
* @email * @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06

@ -24,13 +24,15 @@ public class ForumView extends ForumEntity implements Serializable {
public ForumView(){ public ForumView(){
} }
public ForumView(ForumEntity forumEntity){ // 接收 ForumEntity 对象的构造函数
try { public ForumView(ForumEntity forumEntity) {
try {
// 将ForumEntity的属性复制到当前ForumView对象
BeanUtils.copyProperties(this, forumEntity); BeanUtils.copyProperties(this, forumEntity);
} catch (IllegalAccessException | InvocationTargetException e) { } catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block // 异常处理,打印堆栈信息
e.printStackTrace(); e.printStackTrace();
} }
} }
} }

@ -24,13 +24,14 @@ public class LeixingView extends LeixingEntity implements Serializable {
public LeixingView(){ public LeixingView(){
} }
public LeixingView(LeixingEntity leixingEntity){ // 接收 LeixingEntity 对象的构造函数
try { public LeixingView(LeixingEntity leixingEntity) {
try {
// 将LeixingEntity的属性复制到当前LeixingView对象
BeanUtils.copyProperties(this, leixingEntity); BeanUtils.copyProperties(this, leixingEntity);
} catch (IllegalAccessException | InvocationTargetException e) { } catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block // 异常处理,打印堆栈信息
e.printStackTrace(); e.printStackTrace();
} }
} }
} }

@ -1,36 +1,35 @@
package com.entity.view; package com.entity.view;
import com.entity.WenjuandafuEntity; import com.entity.WenjuandafuEntity;
import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.annotations.TableName;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.io.Serializable; import java.io.Serializable;
/** /**
* *
* *
* 使 * WenjuandafuEntity Serializable
* @author
* @email
* @date 2023-02-21 09:46:06
*/ */
@TableName("wenjuandafu") @TableName("wenjuandafu")
public class WenjuandafuView extends WenjuandafuEntity implements Serializable { public class WenjuandafuView extends WenjuandafuEntity implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L; // 序列化版本号
// 无参构造函数
public WenjuandafuView() {
}
public WenjuandafuView(){ /**
} * WenjuandafuEntity WenjuandafuView
* @param wenjuandafuEntity WenjuandafuEntity
public WenjuandafuView(WenjuandafuEntity wenjuandafuEntity){ */
try { public WenjuandafuView(WenjuandafuEntity wenjuandafuEntity) {
BeanUtils.copyProperties(this, wenjuandafuEntity); try {
} catch (IllegalAccessException | InvocationTargetException e) { // 使用 BeanUtils 工具类将 wenjuandafuEntity 的属性值复制到当前对象中
// TODO Auto-generated catch block BeanUtils.copyProperties(this, wenjuandafuEntity);
e.printStackTrace(); } catch (IllegalAccessException | InvocationTargetException e) {
} // 捕获并打印异常信息
e.printStackTrace();
} }
}
} }

@ -1,36 +1,40 @@
package com.entity.view; package com.entity.view;
import com.entity.WenjuandiaochaEntity; import com.entity.WenjuandiaochaEntity;
import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.annotations.TableName;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.io.Serializable; import java.io.Serializable;
/** /**
* *
* * 使
* 使 * 使
* @author * @author
* @email * @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
@TableName("wenjuandiaocha") @TableName("wenjuandiaocha")
public class WenjuandiaochaView extends WenjuandiaochaEntity implements Serializable { public class WenjuandiaochaView extends WenjuandiaochaEntity implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
*
*/
public WenjuandiaochaView() {
}
public WenjuandiaochaView(){ /**
} * WenjuandiaochaEntityWenjuandiaochaView
* @param wenjuandiaochaEntity
public WenjuandiaochaView(WenjuandiaochaEntity wenjuandiaochaEntity){ */
try { public WenjuandiaochaView(WenjuandiaochaEntity wenjuandiaochaEntity) {
BeanUtils.copyProperties(this, wenjuandiaochaEntity); try {
} catch (IllegalAccessException | InvocationTargetException e) { BeanUtils.copyProperties(this, wenjuandiaochaEntity);
// TODO Auto-generated catch block } catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace(); // 打印堆栈跟踪信息以便调试
} e.printStackTrace();
}
} }
} }

@ -19,7 +19,7 @@ import java.io.Serializable;
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
public class LeixingVO implements Serializable { public class LeixingVO implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;// 版本控制,用于序列化
} }

@ -10,28 +10,62 @@ import com.entity.vo.ChatVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.entity.view.ChatView; import com.entity.view.ChatView;
/** /**
* 线 * 线线
* * IService<ChatEntity> MyBatis-Plus CRUD
*
* @author * @author
* @email * @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
public interface ChatService extends IService<ChatEntity> { public interface ChatService extends IService<ChatEntity> {
/**
*
*
* @param params
* @return PageUtils
*/
PageUtils queryPage(Map<String, Object> params); PageUtils queryPage(Map<String, Object> params);
List<ChatVO> selectListVO(Wrapper<ChatEntity> wrapper); /**
*
ChatVO selectVO(@Param("ew") Wrapper<ChatEntity> wrapper); *
* @param wrapper
List<ChatView> selectListView(Wrapper<ChatEntity> wrapper); * @return
*/
ChatView selectView(@Param("ew") Wrapper<ChatEntity> wrapper); List<ChatVO> selectListVO(Wrapper<ChatEntity> wrapper);
PageUtils queryPage(Map<String, Object> params,Wrapper<ChatEntity> wrapper); /**
*
*
* @param wrapper
* @return
*/
ChatVO selectVO(@Param("ew") Wrapper<ChatEntity> wrapper);
/**
*
*
* @param wrapper
* @return
*/
List<ChatView> selectListView(Wrapper<ChatEntity> wrapper);
/**
*
*
* @param wrapper
* @return
*/
ChatView selectView(@Param("ew") Wrapper<ChatEntity> wrapper);
/**
*
*
* @param params
* @param wrapper
* @return PageUtils
*/
PageUtils queryPage(Map<String, Object> params, Wrapper<ChatEntity> wrapper);
} }

@ -3,20 +3,63 @@ package com.service;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
/**
* CommonService
*/
public interface CommonService { public interface CommonService {
List<String> getOption(Map<String, Object> params);
/**
Map<String, Object> getFollowByOption(Map<String, Object> params); *
* @param params
void sh(Map<String, Object> params); * @return
*/
int remindCount(Map<String, Object> params); List<String> getOption(Map<String, Object> params);
Map<String, Object> selectCal(Map<String, Object> params); /**
*
List<Map<String, Object>> selectGroup(Map<String, Object> params); * @param params
* @return
List<Map<String, Object>> selectValue(Map<String, Object> params); */
Map<String, Object> getFollowByOption(Map<String, Object> params);
List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params);
/**
*
* @param params
*/
void sh(Map<String, Object> params);
/**
*
* @param params
* @return
*/
int remindCount(Map<String, Object> params);
/**
*
* @param params
* @return
*/
Map<String, Object> selectCal(Map<String, Object> params);
/**
*
* @param params
* @return
*/
List<Map<String, Object>> selectGroup(Map<String, Object> params);
/**
*
* @param params
* @return
*/
List<Map<String, Object>> selectValue(Map<String, Object> params);
/**
*
* @param params
* @return
*/
List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params);
} }

@ -3,8 +3,8 @@ package com.service;
import java.util.Map; import java.util.Map;
import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.mapper.Wrapper;// 导入MyBatis-Plus的Wrapper接口用于构建查询条件
import com.baomidou.mybatisplus.service.IService; import com.baomidou.mybatisplus.service.IService;// 导入MyBatis-Plus的服务接口
import com.entity.ConfigEntity; import com.entity.ConfigEntity;
import com.utils.PageUtils; import com.utils.PageUtils;
@ -13,5 +13,12 @@ import com.utils.PageUtils;
* *
*/ */
public interface ConfigService extends IService<ConfigEntity> { public interface ConfigService extends IService<ConfigEntity> {
PageUtils queryPage(Map<String, Object> params,Wrapper<ConfigEntity> wrapper);
/**
*
* @param params
* @param wrapper
* @return
*/
PageUtils queryPage(Map<String, Object> params, Wrapper<ConfigEntity> wrapper);
} }

@ -3,14 +3,12 @@ package com.service;
import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.service.IService; import com.baomidou.mybatisplus.service.IService;
import com.utils.PageUtils; import com.utils.PageUtils;
import com.entity.ForumEntity; import com.entity.ForumEntity; // 导入论坛实体类
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.entity.vo.ForumVO; import com.entity.vo.ForumVO;// 导入论坛VO类
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.entity.view.ForumView; import com.entity.view.ForumView;v// 导入论坛视图类
/** /**
* *
* *
@ -20,18 +18,47 @@ import com.entity.view.ForumView;
*/ */
public interface ForumService extends IService<ForumEntity> { public interface ForumService extends IService<ForumEntity> {
/**
*
* @param params
* @return
*/
PageUtils queryPage(Map<String, Object> params); PageUtils queryPage(Map<String, Object> params);
List<ForumVO> selectListVO(Wrapper<ForumEntity> wrapper); /**
* VO
ForumVO selectVO(@Param("ew") Wrapper<ForumEntity> wrapper); * @param wrapper
* @return ForumVO
List<ForumView> selectListView(Wrapper<ForumEntity> wrapper); */
List<ForumVO> selectListVO(Wrapper<ForumEntity> wrapper);
ForumView selectView(@Param("ew") Wrapper<ForumEntity> wrapper);
/**
PageUtils queryPage(Map<String, Object> params,Wrapper<ForumEntity> wrapper); * VO
* @param wrapper
* @return ForumVO
*/
ForumVO selectVO(@Param("ew") Wrapper<ForumEntity> wrapper);
/**
*
* @param wrapper
* @return ForumView
*/
List<ForumView> selectListView(Wrapper<ForumEntity> wrapper);
/**
*
* @param wrapper
* @return ForumView
*/
ForumView selectView(@Param("ew") Wrapper<ForumEntity> wrapper);
/**
*
* @param params
* @param wrapper
* @return
*/
PageUtils queryPage(Map<String, Object> params, Wrapper<ForumEntity> wrapper);
} }

@ -3,12 +3,12 @@ package com.service;
import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.service.IService; import com.baomidou.mybatisplus.service.IService;
import com.utils.PageUtils; import com.utils.PageUtils;
import com.entity.LeixingEntity; import com.entity.LeixingEntity; // 导入类型实体类
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.entity.vo.LeixingVO; import com.entity.vo.LeixingVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.entity.view.LeixingView; import com.entity.view.LeixingView;// 导入类型视图类
/** /**
@ -20,18 +20,47 @@ import com.entity.view.LeixingView;
*/ */
public interface LeixingService extends IService<LeixingEntity> { public interface LeixingService extends IService<LeixingEntity> {
/**
*
* @param params
* @return
*/
PageUtils queryPage(Map<String, Object> params); PageUtils queryPage(Map<String, Object> params);
List<LeixingVO> selectListVO(Wrapper<LeixingEntity> wrapper); /**
* VO
LeixingVO selectVO(@Param("ew") Wrapper<LeixingEntity> wrapper); * @param wrapper
* @return LeixingVO
List<LeixingView> selectListView(Wrapper<LeixingEntity> wrapper); */
List<LeixingVO> selectListVO(Wrapper<LeixingEntity> wrapper);
LeixingView selectView(@Param("ew") Wrapper<LeixingEntity> wrapper);
/**
PageUtils queryPage(Map<String, Object> params,Wrapper<LeixingEntity> wrapper); * VO
* @param wrapper
* @return LeixingVO
*/
LeixingVO selectVO(@Param("ew") Wrapper<LeixingEntity> wrapper);
/**
*
* @param wrapper
* @return LeixingView
*/
List<LeixingView> selectListView(Wrapper<LeixingEntity> wrapper);
/**
*
* @param wrapper
* @return LeixingView
*/
LeixingView selectView(@Param("ew") Wrapper<LeixingEntity> wrapper);
/**
*
* @param params
* @param wrapper
* @return
*/
PageUtils queryPage(Map<String, Object> params, Wrapper<LeixingEntity> wrapper);
} }

@ -20,26 +20,70 @@ import com.entity.view.WenjuandafuView;
*/ */
public interface WenjuandafuService extends IService<WenjuandafuEntity> { public interface WenjuandafuService extends IService<WenjuandafuEntity> {
/**
*
* @param params
* @return
*/
PageUtils queryPage(Map<String, Object> params); PageUtils queryPage(Map<String, Object> params);
List<WenjuandafuVO> selectListVO(Wrapper<WenjuandafuEntity> wrapper); /**
* VO
WenjuandafuVO selectVO(@Param("ew") Wrapper<WenjuandafuEntity> wrapper); * @param wrapper
* @return VO
List<WenjuandafuView> selectListView(Wrapper<WenjuandafuEntity> wrapper); */
List<WenjuandafuVO> selectListVO(Wrapper<WenjuandafuEntity> wrapper);
WenjuandafuView selectView(@Param("ew") Wrapper<WenjuandafuEntity> wrapper);
PageUtils queryPage(Map<String, Object> params,Wrapper<WenjuandafuEntity> wrapper);
List<Map<String, Object>> selectValue(Map<String, Object> params,Wrapper<WenjuandafuEntity> wrapper);
List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params,Wrapper<WenjuandafuEntity> wrapper);
List<Map<String, Object>> selectGroup(Map<String, Object> params,Wrapper<WenjuandafuEntity> wrapper); /**
* VO
* @param wrapper
* @return VO
*/
WenjuandafuVO selectVO(@Param("ew") Wrapper<WenjuandafuEntity> wrapper);
/**
*
* @param wrapper
* @return
*/
List<WenjuandafuView> selectListView(Wrapper<WenjuandafuEntity> wrapper);
/**
*
* @param wrapper
* @return
*/
WenjuandafuView selectView(@Param("ew") Wrapper<WenjuandafuEntity> wrapper);
/**
*
* @param params
* @param wrapper
* @return
*/
PageUtils queryPage(Map<String, Object> params, Wrapper<WenjuandafuEntity> wrapper);
/**
* Map
* @param params
* @param wrapper
* @return Map
*/
List<Map<String, Object>> selectValue(Map<String, Object> params, Wrapper<WenjuandafuEntity> wrapper);
} /**
*
* @param params
* @param wrapper
* @return Map
*/
List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params, Wrapper<WenjuandafuEntity> wrapper);
/**
*
* @param params
* @param wrapper
* @return Map
*/
List<Map<String, Object>> selectGroup(Map<String, Object> params, Wrapper<WenjuandafuEntity> wrapper);

@ -10,36 +10,80 @@ import com.entity.vo.WenjuandiaochaVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.entity.view.WenjuandiaochaView; import com.entity.view.WenjuandiaochaView;
/** /**
* *
* *
* @author * @author
* @email * @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
public interface WenjuandiaochaService extends IService<WenjuandiaochaEntity> { public interface WenjuandiaochaService extends IService<WenjuandiaochaEntity> {
/**
*
* @param params
* @return
*/
PageUtils queryPage(Map<String, Object> params); PageUtils queryPage(Map<String, Object> params);
List<WenjuandiaochaVO> selectListVO(Wrapper<WenjuandiaochaEntity> wrapper); /**
*
* @param wrapper
* @return
*/
List<WenjuandiaochaVO> selectListVO(Wrapper<WenjuandiaochaEntity> wrapper);
WenjuandiaochaVO selectVO(@Param("ew") Wrapper<WenjuandiaochaEntity> wrapper); /**
*
* @param wrapper
* @return
*/
WenjuandiaochaVO selectVO(@Param("ew") Wrapper<WenjuandiaochaEntity> wrapper);
List<WenjuandiaochaView> selectListView(Wrapper<WenjuandiaochaEntity> wrapper); /**
*
* @param wrapper
* @return
*/
List<WenjuandiaochaView> selectListView(Wrapper<WenjuandiaochaEntity> wrapper);
WenjuandiaochaView selectView(@Param("ew") Wrapper<WenjuandiaochaEntity> wrapper); /**
*
* @param wrapper
* @return
*/
WenjuandiaochaView selectView(@Param("ew") Wrapper<WenjuandiaochaEntity> wrapper);
PageUtils queryPage(Map<String, Object> params,Wrapper<WenjuandiaochaEntity> wrapper); /**
*
* @param params
* @param wrapper
* @return
*/
PageUtils queryPage(Map<String, Object> params, Wrapper<WenjuandiaochaEntity> wrapper);
List<Map<String, Object>> selectValue(Map<String, Object> params,Wrapper<WenjuandiaochaEntity> wrapper); /**
*
* @param params
* @param wrapper
* @return
*/
List<Map<String, Object>> selectValue(Map<String, Object> params, Wrapper<WenjuandiaochaEntity> wrapper);
List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params,Wrapper<WenjuandiaochaEntity> wrapper); /**
*
* @param params
* @param wrapper
* @return
*/
List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params, Wrapper<WenjuandiaochaEntity> wrapper);
List<Map<String, Object>> selectGroup(Map<String, Object> params,Wrapper<WenjuandiaochaEntity> wrapper); /**
*
* @param params
* @param wrapper
* @return
*/
List<Map<String, Object>> selectGroup(Map<String, Object> params, Wrapper<WenjuandiaochaEntity> wrapper);
} }

@ -10,36 +10,90 @@ import com.entity.vo.YonghuVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.entity.view.YonghuView; import com.entity.view.YonghuView;
/** /**
* *
* * IService<YonghuEntity> CRUD
*
*
* @author * @author
* @email * @email
* @date 2023-02-21 09:46:06 * @date 2023-02-21 09:46:06
*/ */
public interface YonghuService extends IService<YonghuEntity> { public interface YonghuService extends IService<YonghuEntity> {
/**
*
*
* @param params
* @return PageUtils
*/
PageUtils queryPage(Map<String, Object> params); PageUtils queryPage(Map<String, Object> params);
List<YonghuVO> selectListVO(Wrapper<YonghuEntity> wrapper); /**
*
YonghuVO selectVO(@Param("ew") Wrapper<YonghuEntity> wrapper); *
* @param wrapper
List<YonghuView> selectListView(Wrapper<YonghuEntity> wrapper); * @return
*/
YonghuView selectView(@Param("ew") Wrapper<YonghuEntity> wrapper); List<YonghuVO> selectListVO(Wrapper<YonghuEntity> wrapper);
PageUtils queryPage(Map<String, Object> params,Wrapper<YonghuEntity> wrapper);
List<Map<String, Object>> selectValue(Map<String, Object> params,Wrapper<YonghuEntity> wrapper);
List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params,Wrapper<YonghuEntity> wrapper);
List<Map<String, Object>> selectGroup(Map<String, Object> params,Wrapper<YonghuEntity> wrapper); /**
*
*
* @param wrapper
* @return
*/
YonghuVO selectVO(@Param("ew") Wrapper<YonghuEntity> wrapper);
/**
*
*
* @param wrapper
* @return
*/
List<YonghuView> selectListView(Wrapper<YonghuEntity> wrapper);
/**
*
*
* @param wrapper
* @return
*/
YonghuView selectView(@Param("ew") Wrapper<YonghuEntity> wrapper);
/**
*
*
* @param params
* @param wrapper
* @return PageUtils
*/
PageUtils queryPage(Map<String, Object> params, Wrapper<YonghuEntity> wrapper);
/**
*
*
* @param params
* @param wrapper
* @return
*/
List<Map<String, Object>> selectValue(Map<String, Object> params, Wrapper<YonghuEntity> wrapper);
/**
*
*
* @param params
* @param wrapper
* @return
*/
List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params, Wrapper<YonghuEntity> wrapper);
/**
*
*
* @param params
* @param wrapper
* @return
*/
List<Map<String, Object>> selectGroup(Map<String, Object> params, Wrapper<YonghuEntity> wrapper);
} }

@ -11,7 +11,6 @@ import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils; import com.utils.PageUtils;
import com.utils.Query; import com.utils.Query;
import com.dao.ChatDao; import com.dao.ChatDao;
import com.entity.ChatEntity; import com.entity.ChatEntity;
import com.service.ChatService; import com.service.ChatService;
@ -21,43 +20,81 @@ import com.entity.view.ChatView;
@Service("chatService") @Service("chatService")
public class ChatServiceImpl extends ServiceImpl<ChatDao, ChatEntity> implements ChatService { public class ChatServiceImpl extends ServiceImpl<ChatDao, ChatEntity> implements ChatService {
/**
* ChatEntity
* @param params Map
* @return PageUtils
*/
@Override @Override
public PageUtils queryPage(Map<String, Object> params) { public PageUtils queryPage(Map<String, Object> params) {
// 使用Query类获取分页信息并调用selectPage方法进行数据库查询
Page<ChatEntity> page = this.selectPage( Page<ChatEntity> page = this.selectPage(
new Query<ChatEntity>(params).getPage(), new Query<ChatEntity>(params).getPage(),
new EntityWrapper<ChatEntity>() new EntityWrapper<ChatEntity>()
); );
// 将查询结果封装到PageUtils对象中并返回
return new PageUtils(page); return new PageUtils(page);
} }
/**
* ChatView
* @param params Map
* @param wrapper
* @return PageUtils
*/
// 使用Query类获取分页信息调用自定义的selectListView方法进行数据库查询并将结果设置到page对象中
@Override @Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<ChatEntity> wrapper) { public PageUtils queryPage(Map<String, Object> params, Wrapper<ChatEntity> wrapper) {
Page<ChatView> page =new Query<ChatView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper)); Page<ChatView> page = new Query<ChatView>(params).getPage();
PageUtils pageUtil = new PageUtils(page);
return pageUtil; page.setRecords(baseMapper.selectListView(page, wrapper));
} // 将查询结果封装到PageUtils对象中并返回
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
/**
* ChatVO
* @param wrapper
* @return ChatVO
*/
@Override @Override
public List<ChatVO> selectListVO(Wrapper<ChatEntity> wrapper) { public List<ChatVO> selectListVO(Wrapper<ChatEntity> wrapper) {
return baseMapper.selectListVO(wrapper); // 调用自定义的selectListVO方法进行数据库查询并返回结果
} return baseMapper.selectListVO(wrapper);
}
@Override
public ChatVO selectVO(Wrapper<ChatEntity> wrapper) { /**
return baseMapper.selectVO(wrapper); * ChatVO
} * @param wrapper
* @return ChatVO
@Override */
public List<ChatView> selectListView(Wrapper<ChatEntity> wrapper) { @Override
return baseMapper.selectListView(wrapper); public ChatVO selectVO(Wrapper<ChatEntity> wrapper) {
} // 调用自定义的selectVO方法进行数据库查询并返回结果
return baseMapper.selectVO(wrapper);
@Override }
public ChatView selectView(Wrapper<ChatEntity> wrapper) {
return baseMapper.selectView(wrapper); /**
} * @param wrapper
* @return ChatView
*/
// 调用自定义的selectListView方法进行数据库查询并返回结果
@Override
public List<ChatView> selectListView(Wrapper<ChatEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
/**
* ChatView
* @param wrapper
* @return ChatView
*/
@Override
public ChatView selectView(Wrapper<ChatEntity> wrapper) {
// 调用自定义的selectView方法进行数据库查询并返回结果
return baseMapper.selectView(wrapper);
}
} }

@ -1,7 +1,5 @@
package com.service.impl; package com.service.impl;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -11,54 +9,53 @@ import org.springframework.stereotype.Service;
import com.dao.CommonDao; import com.dao.CommonDao;
import com.service.CommonService; import com.service.CommonService;
/** /**
* *
*/ */
@Service("commonService") @Service("commonService")
public class CommonServiceImpl implements CommonService { public class CommonServiceImpl implements CommonService {
@Autowired @Autowired
private CommonDao commonDao; private CommonDao commonDao; // 自动注入数据访问对象
@Override @Override
public List<String> getOption(Map<String, Object> params) { public List<String> getOption(Map<String, Object> params) {
return commonDao.getOption(params); return commonDao.getOption(params); // 获取选项列表
} }
@Override @Override
public Map<String, Object> getFollowByOption(Map<String, Object> params) { public Map<String, Object> getFollowByOption(Map<String, Object> params) {
return commonDao.getFollowByOption(params); return commonDao.getFollowByOption(params); // 根据选项获取关注信息
} }
@Override @Override
public void sh(Map<String, Object> params) { public void sh(Map<String, Object> params) {
commonDao.sh(params); commonDao.sh(params); // 执行某种操作(具体操作未明)
} }
@Override @Override
public int remindCount(Map<String, Object> params) { public int remindCount(Map<String, Object> params) {
return commonDao.remindCount(params); return commonDao.remindCount(params); // 获取提醒数量
} }
@Override @Override
public Map<String, Object> selectCal(Map<String, Object> params) { public Map<String, Object> selectCal(Map<String, Object> params) {
return commonDao.selectCal(params); return commonDao.selectCal(params); // 选择并计算某些值
} }
@Override @Override
public List<Map<String, Object>> selectGroup(Map<String, Object> params) { public List<Map<String, Object>> selectGroup(Map<String, Object> params) {
return commonDao.selectGroup(params); return commonDao.selectGroup(params); // 按组选择数据
} }
@Override @Override
public List<Map<String, Object>> selectValue(Map<String, Object> params) { public List<Map<String, Object>> selectValue(Map<String, Object> params) {
return commonDao.selectValue(params); return commonDao.selectValue(params); // 选择特定值
} }
@Override @Override
public List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params) { public List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params) {
return commonDao.selectTimeStatValue(params); return commonDao.selectTimeStatValue(params); // 选择并统计时间相关的值
} }
} }

@ -24,10 +24,10 @@ import com.utils.Query;
public class ConfigServiceImpl extends ServiceImpl<ConfigDao, ConfigEntity> implements ConfigService { public class ConfigServiceImpl extends ServiceImpl<ConfigDao, ConfigEntity> implements ConfigService {
@Override @Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<ConfigEntity> wrapper) { public PageUtils queryPage(Map<String, Object> params, Wrapper<ConfigEntity> wrapper) {
// 使用MyBatis-Plus的selectPage方法进行分页查询
Page<ConfigEntity> page = this.selectPage( Page<ConfigEntity> page = this.selectPage(
new Query<ConfigEntity>(params).getPage(), new Query<ConfigEntity>(params).getPage(), // 获取分页参数
wrapper wrapper // 查询条件
); );
return new PageUtils(page); return new PageUtils(page); // 返回分页结果
}
} }

@ -18,46 +18,76 @@ import com.service.ForumService;
import com.entity.vo.ForumVO; import com.entity.vo.ForumVO;
import com.entity.view.ForumView; import com.entity.view.ForumView;
@Service("forumService") @Service("forumService") // 将该类标记为Spring的Service组件
public class ForumServiceImpl extends ServiceImpl<ForumDao, ForumEntity> implements ForumService { public class ForumServiceImpl extends ServiceImpl<ForumDao, ForumEntity> implements ForumService {
/**
*
* @param params
* @return
*/
@Override @Override
public PageUtils queryPage(Map<String, Object> params) { public PageUtils queryPage(Map<String, Object> params) {
// 调用selectPage方法进行分页查询
Page<ForumEntity> page = this.selectPage( Page<ForumEntity> page = this.selectPage(
new Query<ForumEntity>(params).getPage(), new Query<ForumEntity>(params).getPage(), // 获取分页信息
new EntityWrapper<ForumEntity>() new EntityWrapper<ForumEntity>() // 创建查询条件
); );
return new PageUtils(page); return new PageUtils(page); // 返回分页结果
} }
/**
*
* @param params
* @param wrapper
* @return
*/
@Override @Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<ForumEntity> wrapper) { public PageUtils queryPage(Map<String, Object> params, Wrapper<ForumEntity> wrapper) {
Page<ForumView> page =new Query<ForumView>(params).getPage(); // 创建分页对象
page.setRecords(baseMapper.selectListView(page,wrapper)); Page<ForumView> page = new Query<ForumView>(params).getPage();
PageUtils pageUtil = new PageUtils(page); // 设置记录
return pageUtil; page.setRecords(baseMapper.selectListView(page, wrapper));
} return new PageUtils(page); // 返回分页结果
}
/**
* VO
* @param wrapper
* @return VO
*/
@Override @Override
public List<ForumVO> selectListVO(Wrapper<ForumEntity> wrapper) { public List<ForumVO> selectListVO(Wrapper<ForumEntity> wrapper) {
return baseMapper.selectListVO(wrapper); return baseMapper.selectListVO(wrapper); // 调用数据访问对象方法返回VO对象列表
} }
@Override /**
public ForumVO selectVO(Wrapper<ForumEntity> wrapper) { * VO
return baseMapper.selectVO(wrapper); * @param wrapper
} * @return VO
*/
@Override @Override
public List<ForumView> selectListView(Wrapper<ForumEntity> wrapper) { public ForumVO selectVO(Wrapper<ForumEntity> wrapper) {
return baseMapper.selectListView(wrapper); return baseMapper.selectVO(wrapper); // 调用数据访问对象方法返回单个VO对象
} }
@Override /**
public ForumView selectView(Wrapper<ForumEntity> wrapper) { *
return baseMapper.selectView(wrapper); * @param wrapper
} * @return
*/
@Override
public List<ForumView> selectListView(Wrapper<ForumEntity> wrapper) {
return baseMapper.selectListView(wrapper); // 调用数据访问对象方法,返回视图对象列表
}
/**
*
* @param wrapper
* @return
*/
@Override
public ForumView selectView(Wrapper<ForumEntity> wrapper) {
return baseMapper.selectView(wrapper); // 调用数据访问对象方法,返回单个视图对象
}
} }

@ -17,47 +17,75 @@ import com.entity.LeixingEntity;
import com.service.LeixingService; import com.service.LeixingService;
import com.entity.vo.LeixingVO; import com.entity.vo.LeixingVO;
import com.entity.view.LeixingView; import com.entity.view.LeixingView;
@Service("leixingService") // 将该类标记为Spring的Service组件
@Service("leixingService")
public class LeixingServiceImpl extends ServiceImpl<LeixingDao, LeixingEntity> implements LeixingService { public class LeixingServiceImpl extends ServiceImpl<LeixingDao, LeixingEntity> implements LeixingService {
/**
*
* @param params
* @return
*/
@Override @Override
public PageUtils queryPage(Map<String, Object> params) { public PageUtils queryPage(Map<String, Object> params) {
// 使用selectPage方法进行分页查询
Page<LeixingEntity> page = this.selectPage( Page<LeixingEntity> page = this.selectPage(
new Query<LeixingEntity>(params).getPage(), new Query<LeixingEntity>(params).getPage(), // 获取分页信息
new EntityWrapper<LeixingEntity>() new EntityWrapper<LeixingEntity>() // 创建查询条件
); );
return new PageUtils(page); return new PageUtils(page); // 返回分页结果
} }
/**
*
* @param params
* @param wrapper
* @return
*/
@Override @Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<LeixingEntity> wrapper) { public PageUtils queryPage(Map<String, Object> params, Wrapper<LeixingEntity> wrapper) {
Page<LeixingView> page =new Query<LeixingView>(params).getPage(); // 创建分页对象
page.setRecords(baseMapper.selectListView(page,wrapper)); Page<LeixingView> page = new Query<LeixingView>(params).getPage();
PageUtils pageUtil = new PageUtils(page); // 设置记录
return pageUtil; page.setRecords(baseMapper.selectListView(page, wrapper));
} return new PageUtils(page); // 返回分页结果
}
/**
* VO
* @param wrapper
* @return VO
*/
@Override @Override
public List<LeixingVO> selectListVO(Wrapper<LeixingEntity> wrapper) { public List<LeixingVO> selectListVO(Wrapper<LeixingEntity> wrapper) {
return baseMapper.selectListVO(wrapper); return baseMapper.selectListVO(wrapper); // 调用数据访问对象方法返回VO对象列表
} }
@Override /**
public LeixingVO selectVO(Wrapper<LeixingEntity> wrapper) { * VO
return baseMapper.selectVO(wrapper); * @param wrapper
} * @return VO
*/
@Override @Override
public List<LeixingView> selectListView(Wrapper<LeixingEntity> wrapper) { public LeixingVO selectVO(Wrapper<LeixingEntity> wrapper) {
return baseMapper.selectListView(wrapper); return baseMapper.selectVO(wrapper); // 调用数据访问对象方法返回单个VO对象
} }
@Override /**
public LeixingView selectView(Wrapper<LeixingEntity> wrapper) { *
return baseMapper.selectView(wrapper); * @param wrapper
} * @return
*/
@Override
public List<LeixingView> selectListView(Wrapper<LeixingEntity> wrapper) {
return baseMapper.selectListView(wrapper); // 调用数据访问对象方法,返回视图对象列表
}
} /**
*
* @param wrapper
* @return
*/
@Override
public LeixingView selectView(Wrapper<LeixingEntity> wrapper) {
return baseMapper.selectView(wrapper); // 调用数据访问对象方法,返回单个视图对象
}

@ -11,7 +11,6 @@ import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils; import com.utils.PageUtils;
import com.utils.Query; import com.utils.Query;
import com.dao.WenjuandafuDao; import com.dao.WenjuandafuDao;
import com.entity.WenjuandafuEntity; import com.entity.WenjuandafuEntity;
import com.service.WenjuandafuService; import com.service.WenjuandafuService;
@ -21,7 +20,11 @@ import com.entity.view.WenjuandafuView;
@Service("wenjuandafuService") @Service("wenjuandafuService")
public class WenjuandafuServiceImpl extends ServiceImpl<WenjuandafuDao, WenjuandafuEntity> implements WenjuandafuService { public class WenjuandafuServiceImpl extends ServiceImpl<WenjuandafuDao, WenjuandafuEntity> implements WenjuandafuService {
/**
*
* @param params
* @return PageUtils
*/
@Override @Override
public PageUtils queryPage(Map<String, Object> params) { public PageUtils queryPage(Map<String, Object> params) {
Page<WenjuandafuEntity> page = this.selectPage( Page<WenjuandafuEntity> page = this.selectPage(
@ -31,50 +34,90 @@ public class WenjuandafuServiceImpl extends ServiceImpl<WenjuandafuDao, Wenjuand
return new PageUtils(page); return new PageUtils(page);
} }
/**
*
* @param params
* @param wrapper
* @return PageUtils
*/
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<WenjuandafuEntity> wrapper) {
Page<WenjuandafuView> page = new Query<WenjuandafuView>(params).getPage();
page.setRecords(baseMapper.selectListView(page, wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
/**
*
* @param wrapper
* @return
*/
@Override
public List<WenjuandafuVO> selectListVO(Wrapper<WenjuandafuEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
/**
*
* @param wrapper
* @return
*/
@Override @Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<WenjuandafuEntity> wrapper) { public WenjuandafuVO selectVO(Wrapper<WenjuandafuEntity> wrapper) {
Page<WenjuandafuView> page =new Query<WenjuandafuView>(params).getPage(); return baseMapper.selectVO(wrapper);
page.setRecords(baseMapper.selectListView(page,wrapper)); }
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
/**
*
* @param wrapper
* @return
*/
@Override @Override
public List<WenjuandafuVO> selectListVO(Wrapper<WenjuandafuEntity> wrapper) { public List<WenjuandafuView> selectListView(Wrapper<WenjuandafuEntity> wrapper) {
return baseMapper.selectListVO(wrapper); return baseMapper.selectListView(wrapper);
} }
@Override
public WenjuandafuVO selectVO(Wrapper<WenjuandafuEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<WenjuandafuView> selectListView(Wrapper<WenjuandafuEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override /**
public WenjuandafuView selectView(Wrapper<WenjuandafuEntity> wrapper) { *
return baseMapper.selectView(wrapper); * @param wrapper
} * @return
*/
@Override
public WenjuandafuView selectView(Wrapper<WenjuandafuEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
/**
*
* @param params
* @param wrapper
* @return
*/
@Override @Override
public List<Map<String, Object>> selectValue(Map<String, Object> params, Wrapper<WenjuandafuEntity> wrapper) { public List<Map<String, Object>> selectValue(Map<String, Object> params, Wrapper<WenjuandafuEntity> wrapper) {
return baseMapper.selectValue(params, wrapper); return baseMapper.selectValue(params, wrapper);
} }
/**
*
* @param params
* @param wrapper
* @return
*/
@Override @Override
public List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params, Wrapper<WenjuandafuEntity> wrapper) { public List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params, Wrapper<WenjuandafuEntity> wrapper) {
return baseMapper.selectTimeStatValue(params, wrapper); return baseMapper.selectTimeStatValue(params, wrapper);
} }
/**
*
* @param params
* @param wrapper
* @return
*/
@Override @Override
public List<Map<String, Object>> selectGroup(Map<String, Object> params, Wrapper<WenjuandafuEntity> wrapper) { public List<Map<String, Object>> selectGroup(Map<String, Object> params, Wrapper<WenjuandafuEntity> wrapper) {
return baseMapper.selectGroup(params, wrapper); return baseMapper.selectGroup(params, wrapper);
} }
}
}

@ -11,19 +11,27 @@ import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils; import com.utils.PageUtils;
import com.utils.Query; import com.utils.Query;
import com.dao.WenjuandiaochaDao; import com.dao.WenjuandiaochaDao;
import com.entity.WenjuandiaochaEntity; import com.entity.WenjuandiaochaEntity;
import com.service.WenjuandiaochaService; import com.service.WenjuandiaochaService;
import com.entity.vo.WenjuandiaochaVO; import com.entity.vo.WenjuandiaochaVO;
import com.entity.view.WenjuandiaochaView; import com.entity.view.Wenjuandiaocha;
/**
*
* MyBatis-PlusServiceImplWenjuandiaochaService
*/
@Service("wenjuandiaochaService") @Service("wenjuandiaochaService")
public class WenjuandiaochaServiceImpl extends ServiceImpl<WenjuandiaochaDao, WenjuandiaochaEntity> implements WenjuandiaochaService { public class WenjuandiaochaServiceImpl extends ServiceImpl<WenjuandiaochaDao, WenjuandiaochaEntity> implements WenjuandiaochaService {
/**
*
* @param params
* @return
*/
@Override @Override
public PageUtils queryPage(Map<String, Object> params) { public PageUtils queryPage(Map<String, Object> params) {
// 使用MyBatis-Plus的分页插件进行分页查询
Page<WenjuandiaochaEntity> page = this.selectPage( Page<WenjuandiaochaEntity> page = this.selectPage(
new Query<WenjuandiaochaEntity>(params).getPage(), new Query<WenjuandiaochaEntity>(params).getPage(),
new EntityWrapper<WenjuandiaochaEntity>() new EntityWrapper<WenjuandiaochaEntity>()
@ -31,50 +39,93 @@ public class WenjuandiaochaServiceImpl extends ServiceImpl<WenjuandiaochaDao, We
return new PageUtils(page); return new PageUtils(page);
} }
/**
*
* @param params
* @param wrapper
* @return
*/
@Override @Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<WenjuandiaochaEntity> wrapper) { public PageUtils queryPage(Map<String, Object> params, Wrapper<WenjuandiaochaEntity> wrapper) {
Page<WenjuandiaochaView> page =new Query<WenjuandiaochaView>(params).getPage(); // 创建分页对象
page.setRecords(baseMapper.selectListView(page,wrapper)); Page<WenjuandiaochaView> page = new Query<WenjuandiaochaView>(params).getPage();
PageUtils pageUtil = new PageUtils(page); // 设置分页记录
return pageUtil; page.setRecords(baseMapper.selectListView(page, wrapper));
// 返回分页工具类
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
} }
/**
*
* @param wrapper
* @return
*/
@Override @Override
public List<WenjuandiaochaVO> selectListVO(Wrapper<WenjuandiaochaEntity> wrapper) { public List<WenjuandiaochaVO> selectListVO(Wrapper<WenjuandiaochaEntity> wrapper) {
return baseMapper.selectListVO(wrapper); return baseMapper.selectListVO(wrapper);
} }
/**
*
* @param wrapper
* @return
*/
@Override @Override
public WenjuandiaochaVO selectVO(Wrapper<WenjuandiaochaEntity> wrapper) { public WenjuandiaochaVO selectVO(Wrapper<WenjuandiaochaEntity> wrapper) {
return baseMapper.selectVO(wrapper); return baseMapper.selectVO(wrapper);
} }
/**
*
* @param wrapper
* @return
*/
@Override @Override
public List<WenjuandiaochaView> selectListView(Wrapper<WenjuandiaochaEntity> wrapper) { public List<WenjuandiaochaView> selectListView(Wrapper<WenjuandiaochaEntity> wrapper) {
return baseMapper.selectListView(wrapper); return baseMapper.selectListView(wrapper);
} }
/**
*
* @param wrapper
* @return
*/
@Override @Override
public WenjuandiaochaView selectView(Wrapper<WenjuandiaochaEntity> wrapper) { public WenjuandiaochaView selectView(Wrapper<WenjuandiaochaEntity> wrapper) {
return baseMapper.selectView(wrapper); return baseMapper.selectView(wrapper);
} }
/**
*
* @param params
* @param wrapper
* @return
*/
@Override @Override
public List<Map<String, Object>> selectValue(Map<String, Object> params, Wrapper<WenjuandiaochaEntity> wrapper) { public List<Map<String, Object>> selectValue(Map<String, Object> params, Wrapper<WenjuandiaochaEntity> wrapper) {
return baseMapper.selectValue(params, wrapper); return baseMapper.selectValue(params, wrapper);
} }
/**
*
* @param params
* @param wrapper
* @return
*/
@Override @Override
public List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params, Wrapper<WenjuandiaochaEntity> wrapper) { public List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params, Wrapper<WenjuandiaochaEntity> wrapper) {
return baseMapper.selectTimeStatValue(params, wrapper); return baseMapper.selectTimeStatValue(params, wrapper);
} }
/**
*
* @param params
* @param wrapper
* @return
*/
@Override @Override
public List<Map<String, Object>> selectGroup(Map<String, Object> params, Wrapper<WenjuandiaochaEntity> wrapper) { public List<Map<String, Object>> selectGroup(Map<String, Object> params, Wrapper<WenjuandiaochaEntity> wrapper) {
return baseMapper.selectGroup(params, wrapper); return baseMapper.selectGroup(params, wrapper);
} }
} }

@ -11,7 +11,6 @@ import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils; import com.utils.PageUtils;
import com.utils.Query; import com.utils.Query;
import com.dao.YonghuDao; import com.dao.YonghuDao;
import com.entity.YonghuEntity; import com.entity.YonghuEntity;
import com.service.YonghuService; import com.service.YonghuService;
@ -21,7 +20,7 @@ import com.entity.view.YonghuView;
@Service("yonghuService") @Service("yonghuService")
public class YonghuServiceImpl extends ServiceImpl<YonghuDao, YonghuEntity> implements YonghuService { public class YonghuServiceImpl extends ServiceImpl<YonghuDao, YonghuEntity> implements YonghuService {
// 分页查询用户信息
@Override @Override
public PageUtils queryPage(Map<String, Object> params) { public PageUtils queryPage(Map<String, Object> params) {
Page<YonghuEntity> page = this.selectPage( Page<YonghuEntity> page = this.selectPage(
@ -31,50 +30,54 @@ public class YonghuServiceImpl extends ServiceImpl<YonghuDao, YonghuEntity> impl
return new PageUtils(page); return new PageUtils(page);
} }
// 分页查询用户视图信息
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<YonghuEntity> wrapper) {
Page<YonghuView> page = new Query<YonghuView>(params).getPage();
page.setRecords(baseMapper.selectListView(page, wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
// 查询用户值对象列表
@Override
public List<YonghuVO> selectListVO(Wrapper<YonghuEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
// 查询单个用户值对象
@Override @Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<YonghuEntity> wrapper) { public YonghuVO selectVO(Wrapper<YonghuEntity> wrapper) {
Page<YonghuView> page =new Query<YonghuView>(params).getPage(); return baseMapper.selectVO(wrapper);
page.setRecords(baseMapper.selectListView(page,wrapper)); }
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
// 查询用户视图列表
@Override @Override
public List<YonghuVO> selectListVO(Wrapper<YonghuEntity> wrapper) { public List<YonghuView> selectListView(Wrapper<YonghuEntity> wrapper) {
return baseMapper.selectListVO(wrapper); return baseMapper.selectListView(wrapper);
} }
@Override
public YonghuVO selectVO(Wrapper<YonghuEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<YonghuView> selectListView(Wrapper<YonghuEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override // 查询单个用户视图
public YonghuView selectView(Wrapper<YonghuEntity> wrapper) { @Override
return baseMapper.selectView(wrapper); public YonghuView selectView(Wrapper<YonghuEntity> wrapper) {
} return baseMapper.selectView(wrapper);
}
// 根据条件查询特定值
@Override @Override
public List<Map<String, Object>> selectValue(Map<String, Object> params, Wrapper<YonghuEntity> wrapper) { public List<Map<String, Object>> selectValue(Map<String, Object> params, Wrapper<YonghuEntity> wrapper) {
return baseMapper.selectValue(params, wrapper); return baseMapper.selectValue(params, wrapper);
} }
// 根据条件查询时间统计值
@Override @Override
public List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params, Wrapper<YonghuEntity> wrapper) { public List<Map<String, Object>> selectTimeStatValue(Map<String, Object> params, Wrapper<YonghuEntity> wrapper) {
return baseMapper.selectTimeStatValue(params, wrapper); return baseMapper.selectTimeStatValue(params, wrapper);
} }
// 根据条件分组查询数据
@Override @Override
public List<Map<String, Object>> selectGroup(Map<String, Object> params, Wrapper<YonghuEntity> wrapper) { public List<Map<String, Object>> selectGroup(Map<String, Object> params, Wrapper<YonghuEntity> wrapper) {
return baseMapper.selectGroup(params, wrapper); return baseMapper.selectGroup(params, wrapper);
} }
} }

@ -135,11 +135,11 @@ public class BaiduUtil {
if(jsonObject == null){ if(jsonObject == null){
return ""; return "";
} }
// 检查 JSON 对象中是否包含 "words_result" 和 "words_result_num" 键
if(jsonObject.has("words_result") && jsonObject.has("words_result_num")){ if(jsonObject.has("words_result") && jsonObject.has("words_result_num")){
int wordsResultNum = jsonObject.getInt("words_result_num"); int wordsResultNum = jsonObject.getInt("words_result_num");
if(wordsResultNum > 0){ if(wordsResultNum > 0){
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();// 用于拼接字符串
JSONArray jsonArray = jsonObject.getJSONArray("words_result"); JSONArray jsonArray = jsonObject.getJSONArray("words_result");
int len = jsonArray.length(); int len = jsonArray.length();
@ -193,4 +193,7 @@ public class BaiduUtil {
return res; return res;
} }
} }

@ -1,7 +1,7 @@
package com.utils; package com.utils;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;// 导入File类
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -11,17 +11,26 @@ import java.io.InputStream;
*/ */
public class FileUtil { public class FileUtil {
public static byte[] FileToByte(File file) throws IOException {
// 将数据转为流 /**
@SuppressWarnings("resource") *
InputStream content = new FileInputStream(file); * @param file
ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); * @return
byte[] buff = new byte[100]; * @throws IOException
int rc = 0; */
while ((rc = content.read(buff, 0, 100)) > 0) { public static byte[] FileToByte(File file) throws IOException {
swapStream.write(buff, 0, rc); // 将文件数据转为输入流
} @SuppressWarnings("resource") // 这个资源在方法末尾会自动关闭,抑制编译警告
// 获得二进制数组 InputStream content = new FileInputStream(file); // 创建FileInputStream对象读取文件
return swapStream.toByteArray(); ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); // 创建字节数组输出流对象
} byte[] buff = new byte[100];
int rc = 0;
// 循环读取文件数据,直到文件结束
while ((rc = content.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc); // 将读取的数据写入字节数组输出流
}
return swapStream.toByteArray();
}
} }

@ -5,38 +5,45 @@ import java.io.InputStreamReader;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
/** /**
* HttpClient * HttpClient
*/ */
public class HttpClientUtils { public class HttpClientUtils {
/** /**
* @param uri * GET
* @return String * @param uri URL
* @description get * @return
* @description 使GETHTTP
* @author: long.he01 * @author: long.he01
*/ */
public static String doGet(String uri) { public static String doGet(String uri) {
// 用于存储响应结果的StringBuilder对象
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
try { try {
// 初始化一个空字符串用于存储每一行读取的内容
String res = ""; String res = "";
// 创建URL对象
URL url = new URL(uri); URL url = new URL(uri);
// 打开连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置请求方法为GET
conn.setRequestMethod("GET");
// 获取输入流并包装成BufferedReader
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line; String line;
// 逐行读取响应内容
while ((line = in.readLine()) != null) { while ((line = in.readLine()) != null) {
res += line+"\n"; res += line + "\n";
} // 关闭BufferedReader
in.close(); in.close();
// 返回完整的响应内容
return res; return res;
}catch (Exception e) { } catch (Exception e) {
// 捕获异常并打印堆栈信息
e.printStackTrace(); e.printStackTrace();
return null; return null;
} }
} }
} }

@ -1,54 +1,68 @@
package com.utils; package com.utils;
public class JQPageInfo{ public class JQPageInfo {
private Integer page; // 当前页码
private Integer page;
private Integer limit;
// 每页显示的记录数
private String sidx; private Integer limit;
private String order; // 排序字段
private String sidx;
private Integer offset;
// 排序方式(升序或降序)
public Integer getPage() { private String order;
return page;
} // 偏移量,用于计算分页查询时的起始位置
private Integer offset;
public void setPage(Integer page) {
this.page = page; // 获取当前页码
} public Integer getPage() {
return page;
public Integer getLimit() { }
return limit;
} // 设置当前页码
public void setPage(Integer page) {
public void setLimit(Integer limit) { this.page = page;
this.limit = limit; }
}
// 获取每页显示的记录数
public String getSidx() { public Integer getLimit() {
return sidx; return limit;
} }
public void setSidx(String sidx) { // 设置每页显示的记录数
this.sidx = sidx; public void setLimit(Integer limit) {
} this.limit = limit;
}
public String getOrder() {
return order; // 获取排序字段
} public String getSidx() {
return sidx;
public void setOrder(String order) { }
this.order = order;
} // 设置排序字段
public void setSidx(String sidx) {
public Integer getOffset() { this.sidx = sidx;
return offset; }
}
// 获取排序方式
public void setOffset(Integer offset) { public String getOrder() {
this.offset = offset; return order;
} }
// 设置排序方式
public void setOrder(String order) {
this.order = order;
}
// 获取偏移量
public Integer getOffset() {
return offset;
}
// 设置偏移量
public void setOffset(Integer offset) {
this.offset = offset;
}
} }

@ -15,170 +15,167 @@ import com.baomidou.mybatisplus.mapper.Wrapper;
* Mybatis-Plus * Mybatis-Plus
*/ */
public class MPUtil { public class MPUtil {
public static final char UNDERLINE = '_'; public static final char UNDERLINE = '_';
// mybatis plus allEQ 表达式转换,带前缀
//mybatis plus allEQ 表达式转换 public static Map allEQMapPre(Object bean, String pre) {
public static Map allEQMapPre(Object bean,String pre) { Map<String, Object> map = BeanUtil.beanToMap(bean);
Map<String, Object> map =BeanUtil.beanToMap(bean); return camelToUnderlineMap(map, pre);
return camelToUnderlineMap(map,pre); }
}
// mybatis plus allEQ 表达式转换,不带前缀
//mybatis plus allEQ 表达式转换 public static Map allEQMap(Object bean) {
public static Map allEQMap(Object bean) { Map<String, Object> map = BeanUtil.beanToMap(bean);
Map<String, Object> map =BeanUtil.beanToMap(bean); return camelToUnderlineMap(map, "");
return camelToUnderlineMap(map,""); }
}
// mybatis plus allLike 表达式转换,带前缀
public static Wrapper allLikePre(Wrapper wrapper,Object bean,String pre) { public static Wrapper allLikePre(Wrapper wrapper, Object bean, String pre) {
Map<String, Object> map =BeanUtil.beanToMap(bean); Map<String, Object> map = BeanUtil.beanToMap(bean);
Map result = camelToUnderlineMap(map,pre); Map result = camelToUnderlineMap(map, pre);
return genLike(wrapper, result);
return genLike(wrapper,result); }
}
// mybatis plus allLike 表达式转换,不带前缀
public static Wrapper allLike(Wrapper wrapper,Object bean) { public static Wrapper allLike(Wrapper wrapper, Object bean) {
Map result = BeanUtil.beanToMap(bean, true, true); Map result = BeanUtil.beanToMap(bean, true, true);
return genLike(wrapper,result); return genLike(wrapper, result);
} }
// 生成LIKE查询条件
public static Wrapper genLike( Wrapper wrapper,Map param) { public static Wrapper genLike(Wrapper wrapper, Map param) {
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator(); Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
int i=0; int i = 0;
while (it.hasNext()) { while (it.hasNext()) {
if(i>0) wrapper.and(); if (i > 0) wrapper.and();
Map.Entry<String, Object> entry = it.next(); Map.Entry<String, Object> entry = it.next();
String key = entry.getKey(); String key = entry.getKey();
String value = (String) entry.getValue(); String value = (String) entry.getValue();
wrapper.like(key, value); wrapper.like(key, value);
i++; i++;
} }
return wrapper; return wrapper;
} }
public static Wrapper likeOrEq(Wrapper wrapper,Object bean) { // 生成LIKE或EQ查询条件
Map result = BeanUtil.beanToMap(bean, true, true); public static Wrapper likeOrEq(Wrapper wrapper, Object bean) {
return genLikeOrEq(wrapper,result); Map result = BeanUtil.beanToMap(bean, true, true);
} return genLikeOrEq(wrapper, result);
}
public static Wrapper genLikeOrEq( Wrapper wrapper,Map param) {
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator(); // 生成LIKE或EQ查询条件的具体实现
int i=0; public static Wrapper genLikeOrEq(Wrapper wrapper, Map param) {
while (it.hasNext()) { Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
if(i>0) wrapper.and(); int i = 0;
Map.Entry<String, Object> entry = it.next(); while (it.hasNext()) {
String key = entry.getKey(); if (i > 0) wrapper.and();
if(entry.getValue().toString().contains("%")) { Map.Entry<String, Object> entry = it.next();
wrapper.like(key, entry.getValue().toString().replace("%", "")); String key = entry.getKey();
} else { if (entry.getValue().toString().contains("%")) {
wrapper.eq(key, entry.getValue()); wrapper.like(key, entry.getValue().toString().replace("%", ""));
} } else {
i++; wrapper.eq(key, entry.getValue());
} }
return wrapper; i++;
} }
return wrapper;
public static Wrapper allEq(Wrapper wrapper,Object bean) { }
Map result = BeanUtil.beanToMap(bean, true, true);
return genEq(wrapper,result); // 生成EQ查询条件
} public static Wrapper allEq(Wrapper wrapper, Object bean) {
Map result = BeanUtil.beanToMap(bean, true, true);
return genEq(wrapper, result);
public static Wrapper genEq( Wrapper wrapper,Map param) { }
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
int i=0; // 生成EQ查询条件的具体实现
while (it.hasNext()) { public static Wrapper genEq(Wrapper wrapper, Map param) {
if(i>0) wrapper.and(); Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
Map.Entry<String, Object> entry = it.next(); int i = 0;
String key = entry.getKey(); while (it.hasNext()) {
wrapper.eq(key, entry.getValue()); if (i > 0) wrapper.and();
i++; Map.Entry<String, Object> entry = it.next();
} String key = entry.getKey();
return wrapper; wrapper.eq(key, entry.getValue());
} i++;
}
return wrapper;
public static Wrapper between(Wrapper wrapper,Map<String, Object> params) { }
for(String key : params.keySet()) {
String columnName = ""; // 生成BETWEEN查询条件
if(key.endsWith("_start")) { public static Wrapper between(Wrapper wrapper, Map<String, Object> params) {
columnName = key.substring(0, key.indexOf("_start")); for (String key : params.keySet()) {
if(StringUtils.isNotBlank(params.get(key).toString())) { String columnName = "";
wrapper.ge(columnName, params.get(key)); if (key.endsWith("_start")) {
} columnName = key.substring(0, key.indexOf("_start"));
} if (StringUtils.isNotBlank(params.get(key).toString())) {
if(key.endsWith("_end")) { wrapper.ge(columnName, params.get(key));
columnName = key.substring(0, key.indexOf("_end")); }
if(StringUtils.isNotBlank(params.get(key).toString())) { }
wrapper.le(columnName, params.get(key)); if (key.endsWith("_end")) {
} columnName = key.substring(0, key.indexOf("_end"));
} if (StringUtils.isNotBlank(params.get(key).toString())) {
} wrapper.le(columnName, params.get(key));
return wrapper; }
} }
}
public static Wrapper sort(Wrapper wrapper,Map<String, Object> params) { return wrapper;
String order = ""; }
if(params.get("order") != null && StringUtils.isNotBlank(params.get("order").toString())) {
order = params.get("order").toString(); // 生成排序查询条件
} public static Wrapper sort(Wrapper wrapper, Map<String, Object> params) {
if(params.get("sort") != null && StringUtils.isNotBlank(params.get("sort").toString())) { String order = "";
if(order.equalsIgnoreCase("desc")) { if (params.get("order") != null && StringUtils.isNotBlank(params.get("order").toString())) {
wrapper.orderDesc(Arrays.asList(params.get("sort"))); order = params.get("order").toString();
} else { }
wrapper.orderAsc(Arrays.asList(params.get("sort"))); if (params.get("sort") != null && StringUtils.isNotBlank(params.get("sort").toString())) {
} if (order.equalsIgnoreCase("desc")) {
} wrapper.orderDesc(Arrays.asList(params.get("sort")));
return wrapper; } else {
} wrapper.orderAsc(Arrays.asList(params.get("sort")));
}
}
/** return wrapper;
* 线 }
*
* @param param // 驼峰格式字符串转换为下划线格式字符串
* @return public static String camelToUnderline(String param) {
*/ if (param == null || "".equals(param.trim())) {
public static String camelToUnderline(String param) { return "";
if (param == null || "".equals(param.trim())) { }
return ""; int len = param.length();
} StringBuilder sb = new StringBuilder(len);
int len = param.length(); for (int i = 0; i < len; i++) {
StringBuilder sb = new StringBuilder(len); char c = param.charAt(i);
for (int i = 0; i < len; i++) { if (Character.isUpperCase(c)) {
char c = param.charAt(i); sb.append(UNDERLINE);
if (Character.isUpperCase(c)) { sb.append(Character.toLowerCase(c));
sb.append(UNDERLINE); } else {
sb.append(Character.toLowerCase(c)); sb.append(c);
} else { }
sb.append(c); }
} return sb.toString();
} }
return sb.toString();
} public static void main(String[] ages) {
System.out.println(camelToUnderline("ABCddfANM")); // 输出a_b_cddf_anm
public static void main(String[] ages) { }
System.out.println(camelToUnderline("ABCddfANM"));
} // 将驼峰格式的Map键转换为下划线格式并添加前缀如果有
public static Map camelToUnderlineMap(Map param, String pre) {
public static Map camelToUnderlineMap(Map param, String pre) { Map<String, Object> newMap = new HashMap<>();
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
Map<String, Object> newMap = new HashMap<String, Object>(); while (it.hasNext()) {
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator(); Map.Entry<String, Object> entry = it.next();
while (it.hasNext()) { String key = entry.getKey();
Map.Entry<String, Object> entry = it.next(); String newKey = camelToUnderline(key);
String key = entry.getKey(); if (pre.endsWith(".")) {
String newKey = camelToUnderline(key); newMap.put(pre + newKey, entry.getValue());
if (pre.endsWith(".")) { } else if (StringUtils.isEmpty(pre)) {
newMap.put(pre + newKey, entry.getValue()); newMap.put(newKey, entry.getValue());
} else if (StringUtils.isEmpty(pre)) { } else {
newMap.put(newKey, entry.getValue()); newMap.put(pre + "." + newKey, entry.getValue());
} else { }
}
newMap.put(pre + "." + newKey, entry.getValue()); return newMap;
} }
}
return newMap;
}
} }

@ -1,4 +1,3 @@
package com.utils; package com.utils;
import java.io.Serializable; import java.io.Serializable;
@ -8,23 +7,23 @@ import java.util.Map;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
/** /**
* *
*/ */
public class PageUtils implements Serializable { public class PageUtils implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L; // 序列化版本号
//总记录数 // 总记录数
private long total; private long total;
//每页记录数 // 每页记录数
private int pageSize; private int pageSize;
//总页数 // 总页数
private long totalPage; private long totalPage;
//当前页数 // 当前页数
private int currPage; private int currPage;
//列表数据 // 列表数据
private List<?> list; private List<?> list;
/** /**
* *
* @param list * @param list
* @param totalCount * @param totalCount
* @param pageSize * @param pageSize
@ -35,29 +34,31 @@ public class PageUtils implements Serializable {
this.total = totalCount; this.total = totalCount;
this.pageSize = pageSize; this.pageSize = pageSize;
this.currPage = currPage; this.currPage = currPage;
this.totalPage = (int)Math.ceil((double)totalCount/pageSize); this.totalPage = (int)Math.ceil((double)totalCount/pageSize); // 计算总页数
} }
/** /**
* * MyBatis PlusPage
* @param page MyBatis PlusPage
*/ */
public PageUtils(Page<?> page) { public PageUtils(Page<?> page) {
this.list = page.getRecords(); this.list = page.getRecords(); // 获取当前页的数据列表
this.total = page.getTotal(); this.total = page.getTotal(); // 获取总记录数
this.pageSize = page.getSize(); this.pageSize = page.getSize(); // 获取每页记录数
this.currPage = page.getCurrent(); this.currPage = page.getCurrent(); // 获取当前页码
this.totalPage = page.getPages(); this.totalPage = page.getPages(); // 获取总页数
} }
/* /**
* * Map
* @param params Map
*/ */
public PageUtils(Map<String, Object> params) { public PageUtils(Map<String, Object> params) {
Page page =new Query(params).getPage(); Page page =new Query(params).getPage(); // 根据参数创建Page对象
new PageUtils(page); new PageUtils(page); // 调用另一个构造函数进行初始化
} }
// Getter和Setter方法
public int getPageSize() { public int getPageSize() {
return pageSize; return pageSize;
} }
@ -97,5 +98,4 @@ public class PageUtils implements Serializable {
public void setTotal(long total) { public void setTotal(long total) {
this.total = total; this.total = total;
} }
} }

@ -1,4 +1,3 @@
package com.utils; package com.utils;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
@ -9,89 +8,103 @@ import org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
/** /**
* *
*/ */
public class Query<T> extends LinkedHashMap<String, Object> { public class Query<T> extends LinkedHashMap<String, Object> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* mybatis-plus // mybatis-plus分页参数
*/
private Page<T> page; private Page<T> page;
/**
* // 当前页码
*/
private int currPage = 1; private int currPage = 1;
/**
* // 每页条数
*/
private int limit = 10; private int limit = 10;
/**
* 使JQPageInfo
* @param pageInfo JQPageInfo
*/
public Query(JQPageInfo pageInfo) { public Query(JQPageInfo pageInfo) {
//分页参数 // 设置分页参数
if(pageInfo.getPage()!= null){ if (pageInfo.getPage() != null) {
currPage = pageInfo.getPage(); currPage = pageInfo.getPage();
} }
if(pageInfo.getLimit()!= null){ if (pageInfo.getLimit() != null) {
limit = pageInfo.getLimit(); limit = pageInfo.getLimit();
} }
// 防止SQL注入因为sidx、order是通过拼接SQL实现排序的会有SQL注入风险
//防止SQL注入因为sidx、order是通过拼接SQL实现排序的会有SQL注入风险
String sidx = SQLFilter.sqlInject(pageInfo.getSidx()); String sidx = SQLFilter.sqlInject(pageInfo.getSidx());
String order = SQLFilter.sqlInject(pageInfo.getOrder()); String order = SQLFilter.sqlInject(pageInfo.getOrder());
// mybatis-plus分页
//mybatis-plus分页
this.page = new Page<>(currPage, limit); this.page = new Page<>(currPage, limit);
//排序 // 设置序字段和顺
if(StringUtils.isNotBlank(sidx) && StringUtils.isNotBlank(order)){ if (StringUtils.isNotBlank(sidx) && StringUtils.isNotBlank(order)) {
this.page.setOrderByField(sidx); this.page.setOrderByField(sidx);
this.page.setAsc("ASC".equalsIgnoreCase(order)); this.page.setAsc("ASC".equalsIgnoreCase(order));
} }
} }
/**
public Query(Map<String, Object> params){ * 使Map
* @param params Map
*/
public Query(Map<String, Object> params) {
this.putAll(params); this.putAll(params);
//分页参数 // 设置分页参数
if(params.get("page") != null){ if (params.get("page") != null) {
currPage = Integer.parseInt((String)params.get("page")); currPage = Integer.parseInt((String) params.get("page"));
} }
if(params.get("limit") != null){ if (params.get("limit") != null) {
limit = Integer.parseInt((String)params.get("limit")); limit = Integer.parseInt((String) params.get("limit"));
} }
// 计算偏移量并放入Map中
this.put("offset", (currPage - 1) * limit); this.put("offset", (currPage - 1) * limit);
this.put("page", currPage); this.put("page", currPage);
this.put("limit", limit); this.put("limit", limit);
//防止SQL注入因为sidx、order是通过拼接SQL实现排序的会有SQL注入风险 // 防止SQL注入因为sidx、order是通过拼接SQL实现排序的会有SQL注入风险
String sidx = SQLFilter.sqlInject((String)params.get("sidx")); String sidx = SQLFilter.sqlInject((String) params.get("sidx"));
String order = SQLFilter.sqlInject((String)params.get("order")); String order = SQLFilter.sqlInject((String) params.get("order"));
this.put("sidx", sidx); this.put("sidx", sidx);
this.put("order", order); this.put("order", order);
//mybatis-plus分页 // mybatis-plus分页
this.page = new Page<>(currPage, limit); this.page = new Page<>(currPage, limit);
//排序 // 设置序字段和顺
if(StringUtils.isNotBlank(sidx) && StringUtils.isNotBlank(order)){ if (StringUtils.isNotBlank(sidx) && StringUtils.isNotBlank(order)) {
this.page.setOrderByField(sidx); this.page.setOrderByField(sidx);
this.page.setAsc("ASC".equalsIgnoreCase(order)); this.page.setAsc("ASC".equalsIgnoreCase(order));
} }
} }
/**
* mybatis-plus
* @return mybatis-plus
*/
public Page<T> getPage() { public Page<T> getPage() {
return page; return page;
} }
/**
*
* @return
*/
public int getCurrPage() { public int getCurrPage() {
return currPage; return currPage;
} }
/**
*
* @return
*/
public int getLimit() { public int getLimit() {
return limit; return limit;
} }

@ -4,23 +4,27 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
/** /**
* * API
*/ */
public class R extends HashMap<String, Object> { public class R extends HashMap<String, Object> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
// 默认构造函数初始化code为0表示成功
public R() { public R() {
put("code", 0); put("code", 0);
} }
// 静态方法返回一个错误响应默认code为500msg为"未知异常,请联系管理员"
public static R error() { public static R error() {
return error(500, "未知异常,请联系管理员"); return error(500, "未知异常,请联系管理员");
} }
// 静态方法返回一个错误响应code为500msg为传入的参数msg
public static R error(String msg) { public static R error(String msg) {
return error(500, msg); return error(500, msg);
} }
// 静态方法返回一个错误响应code和msg由传入的参数指定
public static R error(int code, String msg) { public static R error(int code, String msg) {
R r = new R(); R r = new R();
r.put("code", code); r.put("code", code);
@ -28,22 +32,26 @@ public class R extends HashMap<String, Object> {
return r; return r;
} }
// 静态方法返回一个成功响应msg为传入的参数msg
public static R ok(String msg) { public static R ok(String msg) {
R r = new R(); R r = new R();
r.put("msg", msg); r.put("msg", msg);
return r; return r;
} }
// 静态方法返回一个成功响应包含传入的map中的所有键值对
public static R ok(Map<String, Object> map) { public static R ok(Map<String, Object> map) {
R r = new R(); R r = new R();
r.putAll(map); r.putAll(map);
return r; return r;
} }
// 静态方法返回一个默认的成功响应仅包含code
public static R ok() { public static R ok() {
return new R(); return new R();
} }
// 重写put方法使其返回当前对象以支持链式调用
public R put(String key, Object value) { public R put(String key, Object value) {
super.put(key, value); super.put(key, value);
return this; return this;

@ -6,38 +6,67 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
* Spring Context * Spring Context SpringBean
*/ */
@Component @Component
public class SpringContextUtils implements ApplicationContextAware { public class SpringContextUtils implements ApplicationContextAware {
public static ApplicationContext applicationContext; // 静态变量保存Spring应用上下文
public static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) /**
throws BeansException { * ApplicationContextAwareSpring
SpringContextUtils.applicationContext = applicationContext; * @param applicationContext Spring
} * @throws BeansException
*/
public static Object getBean(String name) { @Override
return applicationContext.getBean(name); public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
} SpringContextUtils.applicationContext = applicationContext;
}
public static <T> T getBean(String name, Class<T> requiredType) {
return applicationContext.getBean(name, requiredType); /**
} * BeanBean
* @param name Bean
public static boolean containsBean(String name) { * @return Bean
return applicationContext.containsBean(name); */
} public static Object getBean(String name) {
return applicationContext.getBean(name);
public static boolean isSingleton(String name) { }
return applicationContext.isSingleton(name);
} /**
* BeanBean
public static Class<? extends Object> getType(String name) { * @param name Bean
return applicationContext.getType(name); * @param requiredType Bean
} * @return Bean
*/
} public static <T> T getBean(String name, Class<T> requiredType) {
return applicationContext.getBean(name, requiredType);
}
/**
* SpringBean
* @param name Bean
* @return truefalse
*/
public static boolean containsBean(String name) {
return applicationContext.containsBean(name);
}
/**
* Bean
* @param name Bean
* @return truefalse
*/
public static boolean isSingleton(String name) {
return applicationContext.isSingleton(name);
}
/**
* Bean
* @param name Bean
* @return Bean
*/
public static Class<? extends Object> getType(String name) {
return applicationContext.getType(name);
}
}

@ -1,21 +1,19 @@
package com.utils; package com.utils;
import java.util.Set; import java.util.Set;
import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolation;
import javax.validation.Validation; import javax.validation.Validation;
import javax.validation.Validator; import javax.validation.Validator;
import com.entity.EIException; import com.entity.EIException;
/** /**
* hibernate-validator * hibernate-validator
*/ */
public class ValidatorUtils { public class ValidatorUtils {
// 静态变量,用于存储验证器实例
private static Validator validator; private static Validator validator;
// 在静态块中初始化验证器实例
static { static {
validator = Validation.buildDefaultValidatorFactory().getValidator(); validator = Validation.buildDefaultValidatorFactory().getValidator();
} }
@ -26,14 +24,15 @@ public class ValidatorUtils {
* @param groups * @param groups
* @throws EIException EIException * @throws EIException EIException
*/ */
public static void validateEntity(Object object, Class<?>... groups) public static void validateEntity(Object object, Class<?>... groups) throws EIException {
throws EIException { // 执行校验操作,返回违反约束的集合
Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups); Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
// 如果存在违反约束的情况
if (!constraintViolations.isEmpty()) { if (!constraintViolations.isEmpty()) {
ConstraintViolation<Object> constraint = (ConstraintViolation<Object>)constraintViolations.iterator().next(); // 获取第一个违反约束的信息
ConstraintViolation<Object> constraint = (ConstraintViolation<Object>)constraintViolations.iterator().next();
// 抛出自定义异常,并传递错误信息
throw new EIException(constraint.getMessage()); throw new EIException(constraint.getMessage());
} }
} }
} }

@ -3,38 +3,109 @@
<mapper namespace="com.dao.ChatDao"> <mapper namespace="com.dao.ChatDao">
<!-- 可根据自己的需求,是否要使用 --> <!--
可根据自己的需求,是否要使用
定义一个resultMap将数据库列映射到com.entity.ChatEntity的属性
-->
<resultMap type="com.entity.ChatEntity" id="chatMap"> <resultMap type="com.entity.ChatEntity" id="chatMap">
<result property="userid" column="userid"/> <result property="userid" column="userid"/> <!-- 将数据库列userid映射到ChatEntity的属性userid -->
<result property="adminid" column="adminid"/> <result property="adminid" column="adminid"/> <!-- 将数据库列adminid映射到ChatEntity的属性adminid -->
<result property="ask" column="ask"/> <result property="ask" column="ask"/> <!-- 将数据库列ask映射到ChatEntity的属性ask -->
<result property="reply" column="reply"/> <result property="reply" column="reply"/> <!-- 将数据库列reply映射到ChatEntity的属性reply -->
<result property="isreply" column="isreply"/> <result property="isreply" column="isreply"/> <!-- 将数据库列isreply映射到ChatEntity的属性isreply -->
</resultMap> </resultMap>
<select id="selectListVO" <!--
resultType="com.entity.vo.ChatVO" > 分页查询Chat的VO列表
SELECT * FROM chat chat 使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.vo.ChatVO
-->
<select id="selectListVO"
resultType="com.entity.vo.ChatVO">
SELECT * FROM chat chat
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectVO" <!--
resultType="com.entity.vo.ChatVO" > 查询单个Chat的VO记录
SELECT chat.* FROM chat chat 使用${ew.sqlSegment}来动态拼接SQL条件
<where> 1=1 ${ew.sqlSegment}</where> resultType指定返回的结果类型为com.entity.vo.ChatVO
</select> -->
<select id="selectVO"
resultType="com.entity.vo.ChatVO">
SELECT chat.* FROM chat chat
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
分页查询Chat的视图列表
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.ChatView
-->
<select id="selectListView" <select id="selectListView"
resultType="com.entity.view.ChatView" > resultType="com.entity.view.ChatView">
SELECT chat.* FROM chat chat
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
查询单个Chat的视图记录
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.ChatView
-->
<select id="selectView"
resultType="com.entity.view.ChatView">
SELECT * FROM chat chat
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
SELECT chat.* FROM chat chat <!--
查询Chat的统计值
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为map
这里假设需要查询每个用户和管理员的聊天总数,具体查询逻辑需要根据实际需求编写
-->
<select id="selectValue"
resultType="map">
SELECT COUNT(*) AS total, userid, adminid
FROM chat chat
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
GROUP BY userid, adminid <!-- 按userid和adminid分组统计每个用户和管理员的聊天总数 -->
</select>
<!--
查询Chat的时间统计值
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为map
这里假设需要查询某个时间范围内的每日聊天总数,具体查询逻辑需要根据实际需求编写
-->
<select id="selectTimeStatValue"
resultType="map">
SELECT DATE(ask) AS date, COUNT(*) AS count
FROM chat chat
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
GROUP BY DATE(ask) <!-- 按ask列的日期分组统计每日聊天总数 -->
</select>
<!--
查询Chat的分组统计值
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为map
这里假设需要查询按isreply字段分组的聊天记录数具体查询逻辑需要根据实际需求编写
-->
<select id="selectGroup"
resultType="map">
SELECT isreply, COUNT(*) AS count
FROM chat chat
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> GROUP BY isreply <!-- 按isreply字段分组统计每个分组的聊天记录数 -->
</select>
<select id="selectView"
resultType="com.entity.view.ChatView" >
SELECT * FROM chat chat <where> 1=1 ${ew.sqlSegment}</where>
</select>
</mapper> </mapper>

@ -2,70 +2,158 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.CommonDao"> <mapper namespace="com.dao.CommonDao">
<select id="getOption" resultType="String" >
SELECT distinct ${column} FROM ${table} <!--
where ${column} is not null and ${column} !='' 查询表中的唯一选项值
<if test = "conditionColumn != null and conditionValue != null"> @param column 需要查询的列名
and ${conditionColumn}=#{conditionValue} @param table 需要查询的表名
@param conditionColumn 附加条件的列名(可选)
@param conditionValue 附加条件的列值(可选)
@param level 级别条件(可选)
@param parent 父级条件(可选)
@return 唯一的选项值列表
-->
<select id="getOption" resultType="String">
SELECT DISTINCT ${column} FROM ${table}
WHERE ${column} IS NOT NULL AND ${column} != ''
<!-- 如果条件列和条件值不为空,则添加相应的条件 -->
<if test="conditionColumn != null and conditionValue != null">
AND ${conditionColumn} = #{conditionValue}
</if>
<!-- 如果级别条件不为空,则添加相应的条件 -->
<if test="level != null">
AND level = #{level}
</if>
<!-- 如果父级条件不为空,则添加相应的条件 -->
<if test="parent != null">
AND parent = #{parent}
</if>
</select>
<!--
根据选项值查询表中的记录
@param column 需要查询的列名
@param columnValue 列的值
@param table 需要查询的表名
@return 符合条件的记录列表
-->
<select id="getFollowByOption" resultType="map">
SELECT * FROM ${table}
WHERE ${column} = #{columnValue}
</select>
<!--
更新表中记录的审核状态
@param table 需要更新的表名
@param sfsh 审核状态
@param id 记录的id
-->
<update id="sh">
UPDATE ${table}
SET sfsh = #{sfsh}
WHERE id = #{id}
</update>
<!--
查询表中需要提醒的记录数
@param table 需要查询的表名
@param column 需要查询的列名
@param type 提醒类型1或2
@param remindstart 提醒开始时间
@param remindend 提醒结束时间
@return 符合条件的记录数
-->
<select id="remindCount" resultType="int">
SELECT COUNT(1) FROM ${table}
WHERE 1=1
<!-- 如果类型为1则根据数值范围进行过滤 -->
<if test="type == 1">
<if test="remindstart != null">
AND ${column} >= #{remindstart}
</if>
<if test="remindend != null">
AND ${column} <= #{remindend}
</if>
</if>
<!-- 如果类型为2则根据日期范围进行过滤 -->
<if test="type == 2">
<if test="remindstart != null">
AND ${column} >= STR_TO_DATE(#{remindstart}, '%Y-%m-%d')
</if>
<if test="remindend != null">
AND ${column} <= STR_TO_DATE(#{remindend}, '%Y-%m-%d')
</if> </if>
<if test = "level != null"> </if>
and level=#{level} </select>
</if>
<if test = "parent != null"> <!--
and parent=#{parent} 查询表中某一列的统计信息(总和、最大值、最小值、平均值)
</if> @param column 需要查询的列名
</select> @param table 需要查询的表名
@return 包含统计信息的map
<select id="getFollowByOption" resultType="map" > -->
SELECT * FROM ${table} where ${column}=#{columnValue} <select id="selectCal" resultType="map">
</select> SELECT SUM(${column}) AS sum,
MAX(${column}) AS max,
<update id="sh"> MIN(${column}) AS min,
UPDATE ${table} set sfsh=#{sfsh} where id=#{id} AVG(${column}) AS avg
</update> FROM ${table}
</select>
<select id="remindCount" resultType="int" >
SELECT count(1) FROM ${table} <!--
where 1=1 按某一列分组查询记录总数
<if test = "type == 1 "> @param column 需要分组的列名
<if test = " remindstart != null "> @param table 需要查询的表名
and ${column} &gt;= #{remindstart} @return 包含分组信息和记录总数的map列表
</if> -->
<if test = " remindend != null "> <select id="selectGroup" resultType="map">
and ${column} &lt;= #{remindend} SELECT ${column},
</if> COUNT(1) AS total
</if> FROM ${table}
<if test = "type == 2 "> GROUP BY ${column}
<if test = " remindstart != null "> </select>
and ${column} &gt;= str_to_date(#{remindstart},'%Y-%m-%d')
</if> <!--
<if test = " remindend != null "> 按某一列分组查询另一列的总和
and ${column} &lt;= str_to_date(#{remindend},'%Y-%m-%d') @param xColumn 需要分组的列名
</if> @param yColumn 需要求和的列名
</if> @param table 需要查询的表名
</select> @return 包含分组信息和总和的map列表
-->
<select id="selectCal" resultType="map" > <select id="selectValue" resultType="map">
SELECT sum(${column}) sum,max(${column}) max,min(${column}) min,avg(${column}) avg FROM ${table} SELECT ${xColumn},
</select> SUM(${yColumn}) AS total
FROM ${table}
<select id="selectGroup" resultType="map" > GROUP BY ${xColumn}
SELECT ${column} , count(1) total FROM ${table} group by ${column} </select>
</select>
<select id="selectValue" resultType="map" >
SELECT ${xColumn}, sum(${yColumn}) total FROM ${table} group by ${xColumn}
</select>
<select id="selectTimeStatValue" resultType="map" > <!--
<if test = 'timeStatType == "日"'> 按时间统计查询某一列的总和
SELECT DATE_FORMAT(${xColumn},'%Y-%m-%d') ${xColumn}, sum(${yColumn}) total FROM ${table} group by DATE_FORMAT(${xColumn},'%Y-%m-%d') @param timeStatType 时间统计类型(日、月、年)
</if> @param xColumn 需要格式化的时间列名
<if test = 'timeStatType == "月"'> @param yColumn 需要求和的列名
SELECT DATE_FORMAT(${xColumn},'%Y-%m') ${xColumn}, sum(${yColumn}) total FROM ${table} group by DATE_FORMAT(${xColumn},'%Y-%m') @param table 需要查询的表名
</if> @return 包含格式化时间信息和总和的map列表
<if test = 'timeStatType == "年"'> -->
SELECT DATE_FORMAT(${xColumn},'%Y') ${xColumn}, sum(${yColumn}) total FROM ${table} group by DATE_FORMAT(${xColumn},'%Y') <select id="selectTimeStatValue" resultType="map">
</if> <!-- 根据时间统计类型进行不同的日期格式化处理 -->
</select> <if test='timeStatType == "日"'>
SELECT DATE_FORMAT(${xColumn}, '%Y-%m-%d') AS ${xColumn},
SUM(${yColumn}) AS total
FROM ${table}
GROUP BY DATE_FORMAT(${xColumn}, '%Y-%m-%d')
</if>
<if test='timeStatType == "月"'>
SELECT DATE_FORMAT(${xColumn}, '%Y-%m') AS ${xColumn},
SUM(${yColumn}) AS total
FROM ${table}
GROUP BY DATE_FORMAT(${xColumn}, '%Y-%m')
</if>
<if test='timeStatType == "年"'>
SELECT DATE_FORMAT(${xColumn}, '%Y') AS ${xColumn},
SUM(${yColumn}) AS total
FROM ${table}
GROUP BY DATE_FORMAT(${xColumn}, '%Y')
</if>
</select>
</mapper> </mapper>

@ -1,5 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- 指定XML文档的版本和编码 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 声明这是一个MyBatis的Mapper文件并引用MyBatis 3.0的DTD文件 -->
<mapper namespace="com.dao.ConfigDao"> <mapper namespace="com.dao.ConfigDao">
</mapper> <!-- 定义Mapper的命名空间对应于ConfigDao接口 -->
</mapper>

@ -1,42 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- 指定XML文档的版本和编码 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 声明这是一个MyBatis的Mapper文件并引用MyBatis 3.0的DTD文件 -->
<mapper namespace="com.dao.ForumDao"> <mapper namespace="com.dao.ForumDao">
<!-- 定义Mapper的命名空间对应于ForumDao接口 -->
<!-- 可根据自己的需求,是否要使用 --> <!--
可根据自己的需求,是否要使用
定义一个resultMap将数据库列映射到com.entity.ForumEntity的属性
-->
<resultMap type="com.entity.ForumEntity" id="forumMap"> <resultMap type="com.entity.ForumEntity" id="forumMap">
<result property="title" column="title"/> <result property="title" column="title"/> <!-- 将数据库列title映射到ForumEntity的属性title -->
<result property="content" column="content"/> <result property="content" column="content"/> <!-- 将数据库列content映射到ForumEntity的属性content -->
<result property="parentid" column="parentid"/> <result property="parentid" column="parentid"/> <!-- 将数据库列parentid映射到ForumEntity的属性parentid -->
<result property="userid" column="userid"/> <result property="userid" column="userid"/> <!-- 将数据库列userid映射到ForumEntity的属性userid -->
<result property="username" column="username"/> <result property="username" column="username"/> <!-- 将数据库列username映射到ForumEntity的属性username -->
<result property="avatarurl" column="avatarurl"/> <result property="avatarurl" column="avatarurl"/> <!-- 将数据库列avatarurl映射到ForumEntity的属性avatarurl -->
<result property="isdone" column="isdone"/> <result property="isdone" column="isdone"/> <!-- 将数据库列isdone映射到ForumEntity的属性isdone -->
</resultMap> </resultMap>
<select id="selectListVO" <!--
resultType="com.entity.vo.ForumVO" > 分页查询Forum的VO列表
SELECT * FROM forum forum 使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.vo.ForumVO
-->
<select id="selectListVO"
resultType="com.entity.vo.ForumVO">
SELECT * FROM forum forum
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectVO" <!--
resultType="com.entity.vo.ForumVO" > 查询单个Forum的VO记录
SELECT forum.* FROM forum forum 使用${ew.sqlSegment}来动态拼接SQL条件
<where> 1=1 ${ew.sqlSegment}</where> resultType指定返回的结果类型为com.entity.vo.ForumVO
</select> -->
<select id="selectVO"
resultType="com.entity.vo.ForumVO">
SELECT forum.* FROM forum forum
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
分页查询Forum的视图列表
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.ForumView
-->
<select id="selectListView" <select id="selectListView"
resultType="com.entity.view.ForumView" > resultType="com.entity.view.ForumView">
SELECT forum.* FROM forum forum
SELECT forum.* FROM forum forum <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
查询单个Forum的视图记录
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.ForumView
-->
<select id="selectView"
resultType="com.entity.view.ForumView">
SELECT * FROM forum forum
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectView"
resultType="com.entity.view.ForumView" >
SELECT * FROM forum forum <where> 1=1 ${ew.sqlSegment}</where>
</select>
</mapper> </mapper>

@ -1,36 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- 指定XML文档的版本和编码 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 声明这是一个MyBatis的Mapper文件并引用MyBatis 3.0的DTD文件 -->
<mapper namespace="com.dao.LeixingDao"> <mapper namespace="com.dao.LeixingDao">
<!-- 定义Mapper的命名空间对应于LeixingDao接口 -->
<!-- 可根据自己的需求,是否要使用 --> <!--
可根据自己的需求,是否要使用
定义一个resultMap将数据库列映射到com.entity.LeixingEntity的属性
-->
<resultMap type="com.entity.LeixingEntity" id="leixingMap"> <resultMap type="com.entity.LeixingEntity" id="leixingMap">
<result property="leixing" column="leixing"/> <result property="leixing" column="leixing"/> <!-- 将数据库列leixing映射到LeixingEntity的属性leixing -->
</resultMap> </resultMap>
<select id="selectListVO" <!--
resultType="com.entity.vo.LeixingVO" > 分页查询Leixing的VO列表
SELECT * FROM leixing leixing 使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.vo.LeixingVO
-->
<select id="selectListVO"
resultType="com.entity.vo.LeixingVO">
SELECT * FROM leixing leixing
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectVO" <!--
resultType="com.entity.vo.LeixingVO" > 查询单个Leixing的VO记录
SELECT leixing.* FROM leixing leixing 使用${ew.sqlSegment}来动态拼接SQL条件
<where> 1=1 ${ew.sqlSegment}</where> resultType指定返回的结果类型为com.entity.vo.LeixingVO
</select> -->
<select id="selectVO"
resultType="com.entity.vo.LeixingVO">
SELECT leixing.* FROM leixing leixing
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<select id="selectListView" 当然,我会在你的代码中添加详细的注释,以确保每个部分的功能和参数都能被详细理解。以下是添加了注释的代码:
resultType="com.entity.view.LeixingView" >
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 指定XML文档的版本和编码 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 声明这是一个MyBatis的Mapper文件并引用MyBatis 3.0的DTD文件 -->
<mapper namespace="com.dao.LeixingDao">
<!-- 定义Mapper的命名空间对应于LeixingDao接口 -->
SELECT leixing.* FROM leixing leixing <!--
可根据自己的需求,是否要使用
定义一个resultMap将数据库列映射到com.entity.LeixingEntity的属性
-->
<resultMap type="com.entity.LeixingEntity" id="leixingMap">
<result property="leixing" column="leixing"/> <!-- 将数据库列leixing映射到LeixingEntity的属性leixing -->
</resultMap>
<!--
分页查询Leixing的VO列表
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.vo.LeixingVO
-->
<select id="selectListVO"
resultType="com.entity.vo.LeixingVO">
SELECT * FROM leixing leixing
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
查询单个Leixing的VO记录
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.vo.LeixingVO
-->
<select id="selectVO"
resultType="com.entity.vo.LeixingVO">
SELECT leixing.* FROM leixing leixing
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
分页查询Leixing的视图列表
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.LeixingView
-->
<select id="selectListView"
resultType="com.entity.view.LeixingView">
SELECT leixing.* FROM leixing leixing
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
查询单个Leixing的视图记录
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.LeixingView
-->
<select id="selectView"
resultType="com.entity.view.LeixingView">
SELECT * FROM leixing leixing
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectView"
resultType="com.entity.view.LeixingView" >
SELECT * FROM leixing leixing <where> 1=1 ${ew.sqlSegment}</where>
</select>
</mapper> </mapper>

@ -1,39 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- 指定XML文档的版本和编码 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 声明这是一个MyBatis的Mapper文件并引用MyBatis 3.0的DTD文件 -->
<mapper namespace="com.dao.NewsDao"> <mapper namespace="com.dao.NewsDao">
<!-- 定义Mapper的命名空间对应于NewsDao接口 -->
<!-- 可根据自己的需求,是否要使用 --> <!--
可根据自己的需求,是否要使用
定义一个resultMap将数据库列映射到com.entity.NewsEntity的属性
-->
<resultMap type="com.entity.NewsEntity" id="newsMap"> <resultMap type="com.entity.NewsEntity" id="newsMap">
<result property="title" column="title"/> <result property="title" column="title"/> <!-- 将数据库列title映射到NewsEntity的属性title -->
<result property="introduction" column="introduction"/> <result property="introduction" column="introduction"/> <!-- 将数据库列introduction映射到NewsEntity的属性introduction -->
<result property="picture" column="picture"/> <result property="picture" column="picture"/> <!-- 将数据库列picture映射到NewsEntity的属性picture -->
<result property="content" column="content"/> <result property="content" column="content"/> <!-- 将数据库列content映射到NewsEntity的属性content -->
</resultMap> </resultMap>
<select id="selectListVO" <!--
resultType="com.entity.vo.NewsVO" > 分页查询News的VO列表
SELECT * FROM news news 使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.vo.NewsVO
-->
<select id="selectListVO"
resultType="com.entity.vo.NewsVO">
SELECT * FROM news news
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectVO" <!--
resultType="com.entity.vo.NewsVO" > 查询单个News的VO记录
SELECT news.* FROM news news 使用${ew.sqlSegment}来动态拼接SQL条件
<where> 1=1 ${ew.sqlSegment}</where> resultType指定返回的结果类型为com.entity.vo.NewsVO
</select> -->
<select id="selectVO"
resultType="com.entity.vo.NewsVO">
SELECT news.* FROM news news
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
分页查询News的视图列表
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.NewsView
-->
<select id="selectListView" <select id="selectListView"
resultType="com.entity.view.NewsView" > resultType="com.entity.view.NewsView">
SELECT news.* FROM news news
SELECT news.* FROM news news <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
查询单个News的视图记录
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.NewsView
-->
<select id="selectView"
resultType="com.entity.view.NewsView">
SELECT * FROM news news
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectView"
resultType="com.entity.view.NewsView" >
SELECT * FROM news news <where> 1=1 ${ew.sqlSegment}</where>
</select>
</mapper> </mapper>

@ -1,43 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- 指定XML文档的版本和编码 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 声明这是一个MyBatis的Mapper文件并引用MyBatis 3.0的DTD文件 -->
<mapper namespace="com.dao.StoreupDao"> <mapper namespace="com.dao.StoreupDao">
<!-- 定义Mapper的命名空间对应于StoreupDao接口 -->
<!-- 可根据自己的需求,是否要使用 --> <!--
可根据自己的需求,是否要使用
定义一个resultMap将数据库列映射到com.entity.StoreupEntity的属性
-->
<resultMap type="com.entity.StoreupEntity" id="storeupMap"> <resultMap type="com.entity.StoreupEntity" id="storeupMap">
<result property="userid" column="userid"/> <result property="userid" column="userid"/> <!-- 将数据库列userid映射到StoreupEntity的属性userid -->
<result property="refid" column="refid"/> <result property="refid" column="refid"/> <!-- 将数据库列refid映射到StoreupEntity的属性refid -->
<result property="tablename" column="tablename"/> <result property="tablename" column="tablename"/> <!-- 将数据库列tablename映射到StoreupEntity的属性tablename -->
<result property="name" column="name"/> <result property="name" column="name"/> <!-- 将数据库列name映射到StoreupEntity的属性name -->
<result property="picture" column="picture"/> <result property="picture" column="picture"/> <!-- 将数据库列picture映射到StoreupEntity的属性picture -->
<result property="type" column="type"/> <result property="type" column="type"/> <!-- 将数据库列type映射到StoreupEntity的属性type -->
<result property="inteltype" column="inteltype"/> <result property="inteltype" column="inteltype"/> <!-- 将数据库列inteltype映射到StoreupEntity的属性inteltype -->
<result property="remark" column="remark"/> <result property="remark" column="remark"/> <!-- 将数据库列remark映射到StoreupEntity的属性remark -->
</resultMap> </resultMap>
<select id="selectListVO" <!--
resultType="com.entity.vo.StoreupVO" > 分页查询Storeup的VO列表
SELECT * FROM storeup storeup 使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.vo.StoreupVO
-->
<select id="selectListVO"
resultType="com.entity.vo.StoreupVO">
SELECT * FROM storeup storeup
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectVO" <!--
resultType="com.entity.vo.StoreupVO" > 查询单个Storeup的VO记录
SELECT storeup.* FROM storeup storeup 使用${ew.sqlSegment}来动态拼接SQL条件
<where> 1=1 ${ew.sqlSegment}</where> resultType指定返回的结果类型为com.entity.vo.StoreupVO
</select> -->
<select id="selectVO"
resultType="com.entity.vo.StoreupVO">
SELECT storeup.* FROM storeup storeup
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
分页查询Storeup的视图列表
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.StoreupView
-->
<select id="selectListView" <select id="selectListView"
resultType="com.entity.view.StoreupView" > resultType="com.entity.view.StoreupView">
SELECT storeup.* FROM storeup storeup
SELECT storeup.* FROM storeup storeup <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
查询单个Storeup的视图记录
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.StoreupView
-->
<select id="selectView"
resultType="com.entity.view.StoreupView">
SELECT * FROM storeup storeup
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectView"
resultType="com.entity.view.StoreupView" >
SELECT * FROM storeup storeup <where> 1=1 ${ew.sqlSegment}</where>
</select>
</mapper> </mapper>

@ -1,41 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- 指定XML文档的版本和编码 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 声明这是一个MyBatis的Mapper文件并引用MyBatis 3.0的DTD文件 -->
<mapper namespace="com.dao.SystemintroDao"> <mapper namespace="com.dao.SystemintroDao">
<!-- 定义Mapper的命名空间对应于SystemintroDao接口 -->
<!-- 可根据自己的需求,是否要使用 --> <!--
可根据自己的需求,是否要使用
定义一个resultMap将数据库列映射到com.entity.SystemintroEntity的属性
-->
<resultMap type="com.entity.SystemintroEntity" id="systemintroMap"> <resultMap type="com.entity.SystemintroEntity" id="systemintroMap">
<result property="title" column="title"/> <result property="title" column="title"/> <!-- 将数据库列title映射到SystemintroEntity的属性title -->
<result property="subtitle" column="subtitle"/> <result property="subtitle" column="subtitle"/> <!-- 将数据库列subtitle映射到SystemintroEntity的属性subtitle -->
<result property="content" column="content"/> <result property="content" column="content"/> <!-- 将数据库列content映射到SystemintroEntity的属性content -->
<result property="picture1" column="picture1"/> <result property="picture1" column="picture1"/> <!-- 将数据库列picture1映射到SystemintroEntity的属性picture1 -->
<result property="picture2" column="picture2"/> <result property="picture2" column="picture2"/> <!-- 将数据库列picture2映射到SystemintroEntity的属性picture2 -->
<result property="picture3" column="picture3"/> <result property="picture3" column="picture3"/> <!-- 将数据库列picture3映射到SystemintroEntity的属性picture3 -->
</resultMap> </resultMap>
<select id="selectListVO" <!--
resultType="com.entity.vo.SystemintroVO" > 分页查询Systemintro的VO列表
SELECT * FROM systemintro systemintro 使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.vo.SystemintroVO
-->
<select id="selectListVO"
resultType="com.entity.vo.SystemintroVO">
SELECT * FROM systemintro systemintro
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectVO" <!--
resultType="com.entity.vo.SystemintroVO" > 查询单个Systemintro的VO记录
SELECT systemintro.* FROM systemintro systemintro 使用${ew.sqlSegment}来动态拼接SQL条件
<where> 1=1 ${ew.sqlSegment}</where> resultType指定返回的结果类型为com.entity.vo.SystemintroVO
</select> -->
<select id="selectVO"
resultType="com.entity.vo.SystemintroVO">
SELECT systemintro.* FROM systemintro systemintro
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
分页查询Systemintro的视图列表
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.SystemintroView
-->
<select id="selectListView" <select id="selectListView"
resultType="com.entity.view.SystemintroView" > resultType="com.entity.view.SystemintroView">
SELECT systemintro.* FROM systemintro systemintro
SELECT systemintro.* FROM systemintro systemintro <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
查询单个Systemintro的视图记录
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.SystemintroView
-->
<select id="selectView"
resultType="com.entity.view.SystemintroView">
SELECT * FROM systemintro systemintro
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectView"
resultType="com.entity.view.SystemintroView" >
SELECT * FROM systemintro systemintro <where> 1=1 ${ew.sqlSegment}</where>
</select>
</mapper> </mapper>

@ -1,13 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- 指定XML文档的版本和编码 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 声明这是一个MyBatis的Mapper文件并引用MyBatis 3.0的DTD文件 -->
<mapper namespace="com.dao.TokenDao"> <mapper namespace="com.dao.TokenDao">
<!-- 定义Mapper的命名空间对应于TokenDao接口 -->
<!--
分页查询Token的视图列表
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.TokenEntity
-->
<select id="selectListView" <select id="selectListView"
resultType="com.entity.TokenEntity" > resultType="com.entity.TokenEntity" >
SELECT t.* FROM token t
SELECT t.* FROM token t <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
</mapper> </mapper>

@ -1,13 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- 指定XML文档的版本和编码 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 声明这是一个MyBatis的Mapper文件并引用MyBatis 3.0的DTD文件 -->
<mapper namespace="com.dao.UsersDao"> <mapper namespace="com.dao.UsersDao">
<!-- 定义Mapper的命名空间对应于UsersDao接口 -->
<!--
分页查询Users的视图列表
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.UsersEntity
-->
<select id="selectListView" <select id="selectListView"
resultType="com.entity.UsersEntity" > resultType="com.entity.UsersEntity" >
SELECT u.* FROM users u
SELECT u.* FROM users u <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
</mapper> </mapper>

@ -1,84 +1,138 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- 指定XML文档的版本和编码 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 声明这是一个MyBatis的Mapper文件并引用MyBatis 3.0的DTD文件 -->
<mapper namespace="com.dao.WenjuandafuDao"> <mapper namespace="com.dao.WenjuandafuDao">
<!-- 定义Mapper的命名空间对应于WenjuandafuDao接口 -->
<!-- 可根据自己的需求,是否要使用 --> <!--
可根据自己的需求,是否要使用
定义一个resultMap将数据库列映射到com.entity.WenjuandafuEntity的属性
-->
<resultMap type="com.entity.WenjuandafuEntity" id="wenjuandafuMap"> <resultMap type="com.entity.WenjuandafuEntity" id="wenjuandafuMap">
<result property="wenjuanbiaoti" column="wenjuanbiaoti"/> <result property="wenjuanbiaoti" column="wenjuanbiaoti"/> <!-- 将数据库列wenjuanbiaoti映射到WenjuandafuEntity的属性wenjuanbiaoti -->
<result property="leixing" column="leixing"/> <result property="leixing" column="leixing"/> <!-- 将数据库列leixing映射到WenjuandafuEntity的属性leixing -->
<result property="wentiyi" column="wentiyi"/> <result property="wentiyi" column="wentiyi"/> <!-- 将数据库列wentiyi映射到WenjuandafuEntity的属性wentiyi -->
<result property="dafuyi" column="dafuyi"/> <result property="dafuyi" column="dafuyi"/> <!-- 将数据库列dafuyi映射到WenjuandafuEntity的属性dafuyi -->
<result property="wentier" column="wentier"/> <result property="wentier" column="wentier"/> <!-- 将数据库列wentier映射到WenjuandafuEntity的属性wentier -->
<result property="dafuer" column="dafuer"/> <result property="dafuer" column="dafuer"/> <!-- 将数据库列dafuer映射到WenjuandafuEntity的属性dafuer -->
<result property="wentisan" column="wentisan"/> <result property="wentisan" column="wentisan"/> <!-- 将数据库列wentisan映射到WenjuandafuEntity的属性wentisan -->
<result property="dafusan" column="dafusan"/> <result property="dafusan" column="dafusan"/> <!-- 将数据库列dafusan映射到WenjuandafuEntity的属性dafusan -->
<result property="wentisi" column="wentisi"/> <result property="wentisi" column="wentisi"/> <!-- 将数据库列wentisi映射到WenjuandafuEntity的属性wentisi -->
<result property="dafusi" column="dafusi"/> <result property="dafusi" column="dafusi"/> <!-- 将数据库列dafusi映射到WenjuandafuEntity的属性dafusi -->
<result property="wentiwu" column="wentiwu"/> <result property="wentiwu" column="wentiwu"/> <!-- 将数据库列wentiwu映射到WenjuandafuEntity的属性wentiwu -->
<result property="dafuwu" column="dafuwu"/> <result property="dafuwu" column="dafuwu"/> <!-- 将数据库列dafuwu映射到WenjuandafuEntity的属性dafuwu -->
<result property="zhanghao" column="zhanghao"/> <result property="zhanghao" column="zhanghao"/> <!-- 将数据库列zhanghao映射到WenjuandafuEntity的属性zhanghao -->
<result property="xingming" column="xingming"/> <result property="xingming" column="xingming"/> <!-- 将数据库列xingming映射到WenjuandafuEntity的属性xingming -->
<result property="tijiaoriqi" column="tijiaoriqi"/> <result property="tijiaoriqi" column="tijiaoriqi"/> <!-- 将数据库列tijiaoriqi映射到WenjuandafuEntity的属性tijiaoriqi -->
</resultMap> </resultMap>
<select id="selectListVO" <!--
resultType="com.entity.vo.WenjuandafuVO" > 分页查询Wenjuandafu的VO列表
SELECT * FROM wenjuandafu wenjuandafu 使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.vo.WenjuandafuVO
-->
<select id="selectListVO"
resultType="com.entity.vo.WenjuandafuVO">
SELECT * FROM wenjuandafu wenjuandafu
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectVO" <!--
resultType="com.entity.vo.WenjuandafuVO" > 查询单个Wenjuandafu的VO记录
SELECT wenjuandafu.* FROM wenjuandafu wenjuandafu 使用${ew.sqlSegment}来动态拼接SQL条件
<where> 1=1 ${ew.sqlSegment}</where> resultType指定返回的结果类型为com.entity.vo.WenjuandafuVO
</select> -->
<select id="selectVO"
resultType="com.entity.vo.WenjuandafuVO">
SELECT wenjuandafu.* FROM wenjuandafu wenjuandafu
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
分页查询Wenjuandafu的视图列表
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.WenjuandafuView
-->
<select id="selectListView" <select id="selectListView"
resultType="com.entity.view.WenjuandafuView" > resultType="com.entity.view.WenjuandafuView">
SELECT wenjuandafu.* FROM wenjuandafu wenjuandafu
SELECT wenjuandafu.* FROM wenjuandafu wenjuandafu <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectView" <!--
resultType="com.entity.view.WenjuandafuView" > 查询单个Wenjuandafu的视图记录
SELECT * FROM wenjuandafu wenjuandafu <where> 1=1 ${ew.sqlSegment}</where> 使用${ew.sqlSegment}来动态拼接SQL条件
</select> resultType指定返回的结果类型为com.entity.view.WenjuandafuView
-->
<select id="selectView"
resultType="com.entity.view.WenjuandafuView">
SELECT * FROM wenjuandafu wenjuandafu
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<select id="selectValue" resultType="map" > <!--
SELECT ${params.xColumn}, sum(${params.yColumn}) total FROM wenjuandafu 查询Wenjuandafu的统计值
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为map
@param params 包含查询参数的map包括xColumn和yColumn
@return 包含统计值的map列表
-->
<select id="selectValue" resultType="map">
SELECT ${params.xColumn}, sum(${params.yColumn}) AS total FROM wenjuandafu
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
group by ${params.xColumn} GROUP BY ${params.xColumn} <!-- 按xColumn分组统计每个组的yColumn总和 -->
limit 10 LIMIT 10 <!-- 限制结果集最多返回10条记录 -->
</select> </select>
<select id="selectTimeStatValue" resultType="map" > <!--
<if test = 'params.timeStatType == "日"'> 查询Wenjuandafu的时间统计值
SELECT DATE_FORMAT(${params.xColumn},'%Y-%m-%d') ${params.xColumn}, sum(${params.yColumn}) total FROM wenjuandafu 使用${ew.sqlSegment}来动态拼接SQL条件
<where> 1=1 ${ew.sqlSegment}</where> resultType指定返回的结果类型为map
group by DATE_FORMAT(${params.xColumn},'%Y-%m-%d') @param params 包含查询参数的map包括timeStatType、xColumn和yColumn
@return 包含时间统计值的map列表
-->
<select id="selectTimeStatValue" resultType="map">
<!-- 根据时间统计类型进行不同的日期格式化处理 -->
<if test='params.timeStatType == "日"'>
SELECT DATE_FORMAT(${params.xColumn}, '%Y-%m-%d') AS ${params.xColumn}, sum(${params.yColumn}) AS total FROM wenjuandafu
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
GROUP BY DATE_FORMAT(${params.xColumn}, '%Y-%m-%d') <!-- 按日分组统计每个组的yColumn总和 -->
</if> </if>
<if test = 'params.timeStatType == "月"'> <if test='params.timeStatType == "月"'>
SELECT DATE_FORMAT(${params.xColumn},'%Y-%m') ${params.xColumn}, sum(${params.yColumn}) total FROM wenjuandafu SELECT DATE_FORMAT(${params.xColumn}, '%Y-%m') AS ${params.xColumn}, sum(${params.yColumn}) AS total FROM wenjuandafu
<where> 1=1 ${ew.sqlSegment}</where> <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
group by DATE_FORMAT(${params.xColumn},'%Y-%m') <where> 1=1 ${ew.sqlSegment}</where>
GROUP BY DATE_FORMAT(${params.xColumn}, '%Y-%m') <!-- 按月分组统计每个组的yColumn总和 -->
</if> </if>
<if test = 'params.timeStatType == "年"'> <if test='params.timeStatType == "年"'>
SELECT DATE_FORMAT(${params.xColumn},'%Y') ${params.xColumn}, sum(${params.yColumn}) total FROM wenjuandafu SELECT DATE_FORMAT(${params.xColumn}, '%Y') AS ${params.xColumn}, sum(${params.yColumn}) AS total FROM wenjuandafu
<where> 1=1 ${ew.sqlSegment}</where> <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
group by DATE_FORMAT(${params.xColumn},'%Y') <where> 1=1 ${ew.sqlSegment}</where>
GROUP BY DATE_FORMAT(${params.xColumn}, '%Y') <!-- 按年分组统计每个组的yColumn总和 -->
</if> </if>
</select> </select>
<select id="selectGroup" resultType="map" > <!--
SELECT ${params.column} , count(1) total FROM wenjuandafu 查询Wenjuandafu的分组统计值
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为map
@param params 包含查询参数的map包括column
@return 包含分组统计值的map列表
-->
<select id="selectGroup" resultType="map">
SELECT ${params.column}, count(1) AS total FROM wenjuandafu
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
group by ${params.column} GROUP BY ${params.column} <!-- 按column分组统计每个组的记录数 -->
limit 10 LIMIT 10 <!-- 限制结果集最多返回10条记录 -->
</select> </select>
</mapper> </mapper>

@ -1,79 +1,133 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- 指定XML文档的版本和编码 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 声明这是一个MyBatis的Mapper文件并引用MyBatis 3.0的DTD文件 -->
<mapper namespace="com.dao.WenjuandiaochaDao"> <mapper namespace="com.dao.WenjuandiaochaDao">
<!-- 定义Mapper的命名空间对应于WenjuandiaochaDao接口 -->
<!-- 可根据自己的需求,是否要使用 --> <!--
可根据自己的需求,是否要使用
定义一个resultMap将数据库列映射到com.entity.WenjuandiaochaEntity的属性
-->
<resultMap type="com.entity.WenjuandiaochaEntity" id="wenjuandiaochaMap"> <resultMap type="com.entity.WenjuandiaochaEntity" id="wenjuandiaochaMap">
<result property="wenjuanbiaoti" column="wenjuanbiaoti"/> <result property="wenjuanbiaoti" column="wenjuanbiaoti"/> <!-- 将数据库列wenjuanbiaoti映射到WenjuandiaochaEntity的属性wenjuanbiaoti -->
<result property="fengmiantupian" column="fengmiantupian"/> <result property="fengmiantupian" column="fengmiantupian"/> <!-- 将数据库列fengmiantupian映射到WenjuandiaochaEntity的属性fengmiantupian -->
<result property="leixing" column="leixing"/> <result property="leixing" column="leixing"/> <!-- 将数据库列leixing映射到WenjuandiaochaEntity的属性leixing -->
<result property="wentiyi" column="wentiyi"/> <result property="wentiyi" column="wentiyi"/> <!-- 将数据库列wentiyi映射到WenjuandiaochaEntity的属性wentiyi -->
<result property="wentier" column="wentier"/> <result property="wentier" column="wentier"/> <!-- 将数据库列wentier映射到WenjuandiaochaEntity的属性wentier -->
<result property="wentisan" column="wentisan"/> <result property="wentisan" column="wentisan"/> <!-- 将数据库列wentisan映射到WenjuandiaochaEntity的属性wentisan -->
<result property="wentisi" column="wentisi"/> <result property="wentisi" column="wentisi"/> <!-- 将数据库列wentisi映射到WenjuandiaochaEntity的属性wentisi -->
<result property="wentiwu" column="wentiwu"/> <result property="wentiwu" column="wentiwu"/> <!-- 将数据库列wentiwu映射到WenjuandiaochaEntity的属性wentiwu -->
<result property="faburiqi" column="faburiqi"/> <result property="faburiqi" column="faburiqi"/> <!-- 将数据库列faburiqi映射到WenjuandiaochaEntity的属性faburiqi -->
<result property="clicktime" column="clicktime"/> <result property="clicktime" column="clicktime"/> <!-- 将数据库列clicktime映射到WenjuandiaochaEntity的属性clicktime -->
</resultMap> </resultMap>
<select id="selectListVO" <!--
resultType="com.entity.vo.WenjuandiaochaVO" > 分页查询Wenjuandiaocha的VO列表
SELECT * FROM wenjuandiaocha wenjuandiaocha 使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.vo.WenjuandiaochaVO
-->
<select id="selectListVO"
resultType="com.entity.vo.WenjuandiaochaVO">
SELECT * FROM wenjuandiaocha wenjuandiaocha
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectVO" <!--
resultType="com.entity.vo.WenjuandiaochaVO" > 查询单个Wenjuandiaocha的VO记录
SELECT wenjuandiaocha.* FROM wenjuandiaocha wenjuandiaocha 使用${ew.sqlSegment}来动态拼接SQL条件
<where> 1=1 ${ew.sqlSegment}</where> resultType指定返回的结果类型为com.entity.vo.WenjuandiaochaVO
</select> -->
<select id="selectVO"
resultType="com.entity.vo.WenjuandiaochaVO">
SELECT wenjuandiaocha.* FROM wenjuandiaocha wenjuandiaocha
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
分页查询Wenjuandiaocha的视图列表
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.WenjuandiaochaView
-->
<select id="selectListView" <select id="selectListView"
resultType="com.entity.view.WenjuandiaochaView" > resultType="com.entity.view.WenjuandiaochaView">
SELECT wenjuandiaocha.* FROM wenjuandiaocha wenjuandiaocha
SELECT wenjuandiaocha.* FROM wenjuandiaocha wenjuandiaocha <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectView" <!--
resultType="com.entity.view.WenjuandiaochaView" > 查询单个Wenjuandiaocha的视图记录
SELECT * FROM wenjuandiaocha wenjuandiaocha <where> 1=1 ${ew.sqlSegment}</where> 使用${ew.sqlSegment}来动态拼接SQL条件
</select> resultType指定返回的结果类型为com.entity.view.WenjuandiaochaView
-->
<select id="selectView"
resultType="com.entity.view.WenjuandiaochaView">
SELECT * FROM wenjuandiaocha wenjuandiaocha
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<select id="selectValue" resultType="map" > <!--
SELECT ${params.xColumn}, sum(${params.yColumn}) total FROM wenjuandiaocha 查询Wenjuandiaocha的统计值
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为map
@param params 包含查询参数的map包括xColumn和yColumn
@return 包含统计值的map列表
-->
<select id="selectValue" resultType="map">
SELECT ${params.xColumn}, sum(${params.yColumn}) AS total FROM wenjuandiaocha
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
group by ${params.xColumn} GROUP BY ${params.xColumn} <!-- 按xColumn分组统计每个组的yColumn总和 -->
limit 10 LIMIT 10 <!-- 限制结果集最多返回10条记录 -->
</select> </select>
<select id="selectTimeStatValue" resultType="map" > <!--
<if test = 'params.timeStatType == "日"'> 查询Wenjuandiaocha的时间统计值
SELECT DATE_FORMAT(${params.xColumn},'%Y-%m-%d') ${params.xColumn}, sum(${params.yColumn}) total FROM wenjuandiaocha 使用${ew.sqlSegment}来动态拼接SQL条件
<where> 1=1 ${ew.sqlSegment}</where> resultType指定返回的结果类型为map
group by DATE_FORMAT(${params.xColumn},'%Y-%m-%d') @param params 包含查询参数的map包括timeStatType、xColumn和yColumn
@return 包含时间统计值的map列表
-->
<select id="selectTimeStatValue" resultType="map">
<!-- 根据时间统计类型进行不同的日期格式化处理 -->
<if test='params.timeStatType == "日"'>
SELECT DATE_FORMAT(${params.xColumn}, '%Y-%m-%d') AS ${params.xColumn}, sum(${params.yColumn}) AS total FROM wenjuandiaocha
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
GROUP BY DATE_FORMAT(${params.xColumn}, '%Y-%m-%d') <!-- 按日分组统计每个组的yColumn总和 -->
</if> </if>
<if test = 'params.timeStatType == "月"'> <if test='params.timeStatType == "月"'>
SELECT DATE_FORMAT(${params.xColumn},'%Y-%m') ${params.xColumn}, sum(${params.yColumn}) total FROM wenjuandiaocha SELECT DATE_FORMAT(${params.xColumn}, '%Y-%m') AS ${params.xColumn}, sum(${params.yColumn}) AS total FROM wenjuandiaocha
<where> 1=1 ${ew.sqlSegment}</where> <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
group by DATE_FORMAT(${params.xColumn},'%Y-%m') <where> 1=1 ${ew.sqlSegment}</where>
GROUP BY DATE_FORMAT(${params.xColumn}, '%Y-%m') <!-- 按月分组统计每个组的yColumn总和 -->
</if> </if>
<if test = 'params.timeStatType == "年"'> <if test='params.timeStatType == "年"'>
SELECT DATE_FORMAT(${params.xColumn},'%Y') ${params.xColumn}, sum(${params.yColumn}) total FROM wenjuandiaocha SELECT DATE_FORMAT(${params.xColumn}, '%Y') AS ${params.xColumn}, sum(${params.yColumn}) AS total FROM wenjuandiaocha
<where> 1=1 ${ew.sqlSegment}</where> <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
group by DATE_FORMAT(${params.xColumn},'%Y') <where> 1=1 ${ew.sqlSegment}</where>
GROUP BY DATE_FORMAT(${params.xColumn}, '%Y') <!-- 按年分组统计每个组的yColumn总和 -->
</if> </if>
</select> </select>
<select id="selectGroup" resultType="map" > <!--
SELECT ${params.column} , count(1) total FROM wenjuandiaocha 查询Wenjuandiaocha的分组统计值
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为map
@param params 包含查询参数的map包括column
@return 包含分组统计值的map列表
-->
<select id="selectGroup" resultType="map">
SELECT ${params.column}, count(1) AS total FROM wenjuandiaocha
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
group by ${params.column} GROUP BY ${params.column} <!-- 按column分组统计每个组的记录数 -->
limit 10 LIMIT 10 <!-- 限制结果集最多返回10条记录 -->
</select> </select>
</mapper> </mapper>

@ -1,76 +1,130 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- 指定XML文档的版本和编码 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 声明这是一个MyBatis的Mapper文件并引用MyBatis 3.0的DTD文件 -->
<mapper namespace="com.dao.YonghuDao"> <mapper namespace="com.dao.YonghuDao">
<!-- 定义Mapper的命名空间对应于YonghuDao接口 -->
<!-- 可根据自己的需求,是否要使用 --> <!--
可根据自己的需求,是否要使用
定义一个resultMap将数据库列映射到com.entity.YonghuEntity的属性
-->
<resultMap type="com.entity.YonghuEntity" id="yonghuMap"> <resultMap type="com.entity.YonghuEntity" id="yonghuMap">
<result property="zhanghao" column="zhanghao"/> <result property="zhanghao" column="zhanghao"/> <!-- 将数据库列zhanghao映射到YonghuEntity的属性zhanghao -->
<result property="mima" column="mima"/> <result property="mima" column="mima"/> <!-- 将数据库列mima映射到YonghuEntity的属性mima -->
<result property="xingming" column="xingming"/> <result property="xingming" column="xingming"/> <!-- 将数据库列xingming映射到YonghuEntity的属性xingming -->
<result property="xingbie" column="xingbie"/> <result property="xingbie" column="xingbie"/> <!-- 将数据库列xingbie映射到YonghuEntity的属性xingbie -->
<result property="youxiang" column="youxiang"/> <result property="youxiang" column="youxiang"/> <!-- 将数据库列youxiang映射到YonghuEntity的属性youxiang -->
<result property="shoujihaoma" column="shoujihaoma"/> <result property="shoujihaoma" column="shoujihaoma"/> <!-- 将数据库列shoujihaoma映射到YonghuEntity的属性shoujihaoma -->
<result property="touxiang" column="touxiang"/> <result property="touxiang" column="touxiang"/> <!-- 将数据库列touxiang映射到YonghuEntity的属性touxiang -->
</resultMap> </resultMap>
<select id="selectListVO" <!--
resultType="com.entity.vo.YonghuVO" > 分页查询Yonghu的VO列表
SELECT * FROM yonghu yonghu 使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.vo.YonghuVO
-->
<select id="selectListVO"
resultType="com.entity.vo.YonghuVO">
SELECT * FROM yonghu yonghu
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectVO" <!--
resultType="com.entity.vo.YonghuVO" > 查询单个Yonghu的VO记录
SELECT yonghu.* FROM yonghu yonghu 使用${ew.sqlSegment}来动态拼接SQL条件
<where> 1=1 ${ew.sqlSegment}</where> resultType指定返回的结果类型为com.entity.vo.YonghuVO
</select> -->
<select id="selectVO"
resultType="com.entity.vo.YonghuVO">
SELECT yonghu.* FROM yonghu yonghu
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<!--
分页查询Yonghu的视图列表
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为com.entity.view.YonghuView
-->
<select id="selectListView" <select id="selectListView"
resultType="com.entity.view.YonghuView" > resultType="com.entity.view.YonghuView">
SELECT yonghu.* FROM yonghu yonghu
SELECT yonghu.* FROM yonghu yonghu <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
</select> </select>
<select id="selectView" <!--
resultType="com.entity.view.YonghuView" > 查询单个Yonghu的视图记录
SELECT * FROM yonghu yonghu <where> 1=1 ${ew.sqlSegment}</where> 使用${ew.sqlSegment}来动态拼接SQL条件
</select> resultType指定返回的结果类型为com.entity.view.YonghuView
-->
<select id="selectView"
resultType="com.entity.view.YonghuView">
SELECT * FROM yonghu yonghu
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<select id="selectValue" resultType="map" > <!--
SELECT ${params.xColumn}, sum(${params.yColumn}) total FROM yonghu 查询Yonghu的统计值
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为map
@param params 包含查询参数的map包括xColumn和yColumn
@return 包含统计值的map列表
-->
<select id="selectValue" resultType="map">
SELECT ${params.xColumn}, sum(${params.yColumn}) AS total FROM yonghu
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
group by ${params.xColumn} GROUP BY ${params.xColumn} <!-- 按xColumn分组统计每个组的yColumn总和 -->
limit 10 LIMIT 10 <!-- 限制结果集最多返回10条记录 -->
</select> </select>
<select id="selectTimeStatValue" resultType="map" > <!--
<if test = 'params.timeStatType == "日"'> 查询Yonghu的时间统计值
SELECT DATE_FORMAT(${params.xColumn},'%Y-%m-%d') ${params.xColumn}, sum(${params.yColumn}) total FROM yonghu 使用${ew.sqlSegment}来动态拼接SQL条件
<where> 1=1 ${ew.sqlSegment}</where> resultType指定返回的结果类型为map
group by DATE_FORMAT(${params.xColumn},'%Y-%m-%d') @param params 包含查询参数的map包括timeStatType、xColumn和yColumn
@return 包含时间统计值的map列表
-->
<select id="selectTimeStatValue" resultType="map">
<!-- 根据时间统计类型进行不同的日期格式化处理 -->
<if test='params.timeStatType == "日"'>
SELECT DATE_FORMAT(${params.xColumn}, '%Y-%m-%d') AS ${params.xColumn}, sum(${params.yColumn}) AS total FROM yonghu
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where>
GROUP BY DATE_FORMAT(${params.xColumn}, '%Y-%m-%d') <!-- 按日分组统计每个组的yColumn总和 -->
</if> </if>
<if test = 'params.timeStatType == "月"'> <if test='params.timeStatType == "月"'>
SELECT DATE_FORMAT(${params.xColumn},'%Y-%m') ${params.xColumn}, sum(${params.yColumn}) total FROM yonghu SELECT DATE_FORMAT(${params.xColumn}, '%Y-%m') AS ${params.xColumn}, sum(${params.yColumn}) AS total FROM yonghu
<where> 1=1 ${ew.sqlSegment}</where> <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
group by DATE_FORMAT(${params.xColumn},'%Y-%m') <where> 1=1 ${ew.sqlSegment}</where>
GROUP BY DATE_FORMAT(${params.xColumn}, '%Y-%m') <!-- 按月分组统计每个组的yColumn总和 -->
</if> </if>
<if test = 'params.timeStatType == "年"'> <if test='params.timeStatType == "年"'>
SELECT DATE_FORMAT(${params.xColumn},'%Y') ${params.xColumn}, sum(${params.yColumn}) total FROM yonghu SELECT DATE_FORMAT(${params.xColumn}, '%Y') AS ${params.xColumn}, sum(${params.yColumn}) AS total FROM yonghu
<where> 1=1 ${ew.sqlSegment}</where> <!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
group by DATE_FORMAT(${params.xColumn},'%Y') <where> 1=1 ${ew.sqlSegment}</where>
GROUP BY DATE_FORMAT(${params.xColumn}, '%Y') <!-- 按年分组统计每个组的yColumn总和 -->
</if> </if>
</select> </select>
<select id="selectGroup" resultType="map" > <!--
SELECT ${params.column} , count(1) total FROM yonghu 查询Yonghu的分组统计值
使用${ew.sqlSegment}来动态拼接SQL条件
resultType指定返回的结果类型为map
@param params 包含查询参数的map包括column
@return 包含分组统计值的map列表
-->
<select id="selectGroup" resultType="map">
SELECT ${params.column}, count(1) AS total FROM yonghu
<!-- 动态SQL条件1=1是为了方便添加WHERE子句中的其他条件 -->
<where> 1=1 ${ew.sqlSegment}</where> <where> 1=1 ${ew.sqlSegment}</where>
group by ${params.column} GROUP BY ${params.column} <!-- 按column分组统计每个组的记录数 -->
limit 10 LIMIT 10 <!-- 限制结果集最多返回10条记录 -->
</select> </select>
</mapper> </mapper>

@ -6,141 +6,143 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title></title> <title></title>
<!-- 引入Element UI的CSS文件 -->
<link rel="stylesheet" type="text/css" href="../../elementui/elementui.css" /> <link rel="stylesheet" type="text/css" href="../../elementui/elementui.css" />
<style> <style>
/* 设置HTML、body和#app的高度为100% */
html,body,#app { html,body,#app {
height: 100%; height: 100%;
} }
/* 设置body的外边距为0 */
body { body {
margin: 0; margin: 0;
} }
/* 设置聊天表单的样式 */
.chat-form { .chat-form {
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
/* 设置聊天内容的样式 */
.chat-content { .chat-content {
overflow-y: scroll; overflow-y: scroll; /* 垂直滚动条 */
border: 1px solid #eeeeee; border: 1px solid #eeeeee; /* 边框颜色 */
margin: 0; margin: 0; /* 外边距为0 */
padding: 0; padding: 0; /* 内边距为0 */
width: 100%; width: 100%; /* 宽度为100% */
flex: 1; flex: 1; /* 弹性布局,占据剩余空间 */
} }
/* 设置左侧内容的样式 */
.left-content { .left-content {
float: left; float: left; /* 左浮动 */
margin-bottom: 10px; margin-bottom: 10px; /* 底部外边距 */
padding: 10px; padding: 10px; /* 内边距 */
} }
/* 设置右侧内容的样式 */
.right-content { .right-content {
float: right; float: right; /* 右浮动 */
margin-bottom: 10px; margin-bottom: 10px; /* 底部外边距 */
padding: 10px; padding: 10px; /* 内边距 */
} }
/* 清除浮动 */
.clear-float { .clear-float {
clear: both; clear: both;
} }
/* 设置输入按钮区域的样式 */
.btn-input { .btn-input {
margin-left: 0px; margin-left: 0px; /* 左边距为0 */
display: flex; display: flex; /* 弹性布局 */
width: 100%; width: 100%; /* 宽度为100% */
padding: 10px 12px; padding: 10px 12px; /* 内边距 */
box-sizing: border-box; box-sizing: border-box; /* 盒模型 */
} }
</style> </style>
</head> </head>
<body style="overflow-y: hidden;overflow-x: hidden;"> <body style="overflow-y: hidden;overflow-x: hidden;">
<!-- Vue应用的根元素 -->
<div id="app"> <div id="app">
<!-- 使用Element UI的表单组件 -->
<el-form class="detail-form-content chat-form" ref="ruleForm" label-width="0"> <el-form class="detail-form-content chat-form" ref="ruleForm" label-width="0">
<!-- 聊天内容区域 -->
<div class="chat-content"> <div class="chat-content">
<!-- 遍历数据列表 -->
<div v-bind:key="item.id" v-for="item in dataList"> <div v-bind:key="item.id" v-for="item in dataList">
<!-- 如果ask存在显示右侧内容 -->
<div v-if="item.ask" class="right-content"> <div v-if="item.ask" class="right-content">
<el-alert class="text-content" :title="item.ask" :closable="false" type="success"></el-alert> <!-- 使用Element UI的消息提示组件 -->
<el- class="text-content" :title="item.ask" :closable="false" type="success"></el->
</div> </div>
<!-- 如果reply存在显示左侧内容 -->
<div v-else class="left-content"> <div v-else class="left-content">
<el-alert class="text-content" :title="item.reply" :closable="false" type="warning"></el-alert> <!-- 使用Element UI的消息提示组件 -->
<el- class="text-content" :title="item.reply" :closable="false" type="warning"></el->
</div> </div>
<!-- 清除浮动 -->
<div class="clear-float"></div> <div class="clear-float"></div>
</div> </div>
</div> </div>
<!-- 输入按钮区域 -->
<div class="btn-input"> <div class="btn-input">
<el-input style="flex: 1;margin-right: 10px;" v-model="ruleForm.ask" placeholder="发布" style="margin-right: 10px;" clearable></el-input> <!-- 使用Element UI的输入框组件 -->
<el-button type="primary" @click="onSubmit">发布</el-button> <el-input style="flex: 1;margin-right: 10px;" v-model="ruleForm.ask" placeholder="发布" style="margin-right: 10px;" clearable></el-input>
</div> <!-- 使用Element UI的按钮组件 -->
</el-form> <el-button type="primary" @click=" new Vue({
</div> el: "#app",
data() {
<!-- layui --> return {
<script src="../../layui/layui.js"></script> id: "", // 用户ID
<!-- vue --> ruleForm: {}, // 表单数据
<script src="../../js/vue.js"></script> dataList: [], // 数据列表
<!-- elementui --> inter: null // 定时器
<script src="../../elementui/elementui.js"></script> }
<!-- 组件配置信息 --> },
<script src="../../js/config.js"></script> methods: {
<!-- 扩展插件配置信息 --> // 初始化方法
<script src="../../modules/config.js"></script> init(id) {
<!-- 工具方法 --> this.getList(); // 获取列表数据
<script src="../../js/utils.js"></script> this.id = id; // 设置用户ID
<script type="text/javascript"> var that = this; // 保存this引用
var app = new Vue({ var inter = setInterval(function() {
el: "#app", that.getList(); // 定时获取列表数据
data() { }, 10000) // 每10秒执行一次
return { this.inter = inter; // 保存定时器引用
id: "", },
ruleForm: {}, // 获取列表数据的方法
dataList: [], getList() {
inter: null layui.http.request('chat/list', 'get', {
} userid: localStorage.getItem('userid'), // 从本地存储中获取用户ID
}, limit : 100, // 限制返回的数据条数
methods: { sort: 'addtime', // 按添加时间排序
// 初始化 order: 'asc' // 升序排列
init(id) { }, (res) => {
this.getList(); this.dataList = res.data.list; // 更新数据列表
this.id = id; })
var that = this; },
var inter = setInterval(function() { // 提交方法(未实现)
that.getList(); submit() {
}, 10000) this.getList(); // 获取列表数据
this.inter = inter; this.ruleForm.ask=""; // 清空输入框内容
}, }
getList() { }
layui.http.request('chat/list', 'get', { })">发送</el-button>
userid: localStorage.getItem('userid'), </div>
limit : 100, </el-form>
sort: 'addtime', </div>
order: 'asc' <!-- 引入layui模块 -->
}, (res) => { <script src="path/to/layui.js"></script>
this.dataList = res.data.list; <script>
}) layui.use(['layer', 'element', 'http', 'jquery'], function() {
}, // 使用layer模块
// 提交 var layer = layui.layer;
onSubmit() { // 使用element模块
if (!this.ruleForm.ask) { var element = layui.element;
layer.msg('请输入内容', { // 使用http模块
time: 2000, var http = layui.http;
icon: 5 // 使用jquery模块
}); var jquery = layui.jquery;
return
} app.init(); // 初始化应用
layui.http.requestJson('chat/add', 'post', { });
userid: localStorage.getItem('userid'), </script>
ask: this.ruleForm.ask </body>
}, (res) => {
this.getList();
});
this.ruleForm.ask="";
}
}
})
layui.use(['layer', 'element', 'http', 'jquery'], function() {
var layer = layui.layer;
var element = layui.element;
var http = layui.http;
var jquery = layui.jquery;
app.init();
});
</script>
</body>
</html> </html>

@ -1,242 +1,207 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page isELIgnored="true" %>
<!-- 轮播图管理 -->
<!DOCTYPE html> <!DOCTYPE html>
<html> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <title>轮播图管理</title>
<title>轮播图管理</title> <!-- 样式 -->
<link rel="stylesheet" href="../../layui/css/layui.css"> <link rel="stylesheet" href="../../layui/css/layui.css">
<!-- 样式 --> <!-- 主题(主要颜色设置) -->
<link rel="stylesheet" href="../../css/style.css" /> <link rel="stylesheet" href="../../css/theme.css">
<!-- 主题(主要颜色设置) --> <!-- 通用的css -->
<link rel="stylesheet" href="../../css/theme.css" /> <link rel="stylesheet" href="../../css/common.css">
<!-- 通用的css --> </head>
<link rel="stylesheet" href="../../css/common.css" /> <body>
</head> <div id="app">
<style> <!-- 轮播图 -->
.layui-form .layui-form-item .layui-form-select .layui-input { <div id="layui-carousel" class="layui-carousel">
border: 1px solid #eee; <div carousel-item>
border-radius: 30px; <div class="layui-carousel-item" v-for="(item, index) in swiperList" :key="index">
padding: 0 30px 0 10px; <img :src="item.img" />
box-shadow: 0px 0px 0px #ccc; </div>
margin: 0; </div>
outline: none; </div>
color: #666;
width: 120px; <div id="breadcrumb">
font-size: 14px; <span class="en">DATA SHOW</span>
line-height: 40px; <span class="cn">轮播图管理展示</span>
height: 40px; </div>
}
<!-- 图文列表 -->
/* lists */ <div :style='{"padding":"0","margin":"0px auto","flexWrap":"wrap","background":"none","display":"flex","width":"100%","position":"relative"}' class="recommend">
.lists .animation-box {
transform: rotate(0deg) scale(1) skew(0deg, 0deg) translate3d(0px, 0px, 0px); <form :style='{"alignItems":"center","padding":"30px 20px","borderColor":"#bcdbdf","margin":"20px 7% 0","alignItems":"center","itemsAlign":"center","justifyContent":"center","display":"flex","width":"100%","borderWidth":"1px","borderStyle":"outset","height":"auto"}' class="filter form">
} <div :style='{"alignItems":"center","margin":"0 4px 0 0","display":"flex"}' class="item-list">
<div class="lable-input">名称</div>
.lists .animation-box:hover { <input type="text" name="name" :style='{"border":"1px solid #eee","padding":"0 10px","boxShadow":"0px 0px 0px #ccc","margin":"0","color":"#666","fontSize":"14px","lineHeight":"40px","width":"120px","borderRadius":"30px","outline":"none"}' placeholder="名称" autocomplete="off" class="layui-input">
transform: translate3d(0px, 0px, 0px); </div>
-webkit-perspective: 1000px;
perspective: 1000px; <button :style='{"cursor":"pointer","padding":"0px 10px","margin":"0 10px 0 0","color":"#fff","minWidth":"90px","outline":"none","borderRadius":"30px","background":"#40a9ff","borderWidth":"0px","width":"auto","fontSize":"14px","lineHeight":"42px","height":"40px"}' @click="search()"><i :style='{"color":"#fff","margin":"0 10px 0 0","fontSize":"14px"}' class="layui-icon layui-icon-search"></i>搜索</button>
transition: 0.3s; <button v-if="isAuth('config','新增')" :style='{"cursor":"pointer","padding":"0px 10px","margin":"0 4px 0 0","color":"#fdaaba","minWidth":"90px","outline":"none","borderRadius":"30px","background":"#f7aa00","borderWidth":"0px","width":"auto","fontSize":"14px","lineHeight":"42px","height":"40px"}' @click="jump('../config/add.jsp')" type="button" class="btn btn-theme">
} <i :style='{"color":"#fff","margin":"0 10px 0 0","fontSize":"14px"}' class="layui-icon">&#xe654;</i>新增
</button>
.lists img { </form>
transform: rotate(0deg) scale(1) skew(0deg, 0deg) translate3d(0px, 0px, 0px);
} <div :style='{"padding":"40px 0 20px","margin":"40px 7% 0px 7%","flex":"1","background":"none","display":"flex","width":"100%","minWidth":"885px","borderWidth":"0 0 0 0","borderStyle":"solid","height":"auto","order":4}' class="lists">
<!-- 样式二 -->
.lists img:hover { <div :style='{"padding":"0","margin":"0 0 100px","flexWrap":"wrap","background":"none","display":"flex","justifyContent":"space-between","alignItems":"center","width":"100%","height":"auto"}' class="list list-2">
-webkit-perspective: 1000px; <div v-for="(item,index) in dataList" :key="index" @click="jump('../config/detail.jsp?id='+item.id)" :style='{"cursor":"pointer","padding":"10px","margin":"0 0 100px","boxShadow":"0px 0px 0px #eee","borderColor":"#f3d7ca","display":"flex","justifyContent":"space-between","flexWrap":"wrap","width":"49%","borderWidth":"0px","borderStyle":"solid","height":"240px","position":"relative","borderColor":"#f3d7ca"}' class="list-item animation-box">
perspective: 1000px; <img :src="item.img" />
transition: 0.3s; <div :style='{"padding":"10px 10px","verticalAlign":"middle","boxShadow":"inset 0px 0px 0px 0px #f5eee6","top":"60px","right":"30px","display":"flex","justifyContent":"center","alignItems":"center","flexWrap":"wrap","borderRadius":"8px","background":"#40a9ff","borderWidth":"0px","width":"auto","height":"24px","lineHeight":"24px","fontSize":"14px","color":"#fff","textAlign":"center"}' class="info-box">
} <div v-if="item.price" :style='{"width":"100%","padding":"0px 4px","lineHeight":"24px","fontSize":"14px","color":"#f00","textAlign":"center"}' class="time">¥{{Number(item.price).toFixed(2)}}</div>
/* lists */ <div v-if="item.vipprice&&item.vipprice>0" :style='{"width":"100%","padding":"0px 4px","lineHeight":"24px","fontSize":"14px","color":"#f00","textAlign":"center"}' class="time">¥{{Number(item.vipprice).toFixed(2)}}} 会员价</div>
</style> <div v-if="item.jf" :style='{"width":"100%","padding":"0px 4px","lineHeight":"24px","fontSize":"14px","color":"#f00","textAlign":"center"}' class="time">{{Number(item.jf).toFixed(0)}}积分</div>
<body> </div>
<div id="app"> </div>
<!-- 轮播图 --> </div>
<div id="layui-carousel" class="layui-carousel"> </div>
<div carousel-item> </div>
<div class="layui-carousel-item" v-for="(item,index) in swiperList" :key="index"> <div class="pager" id="pager"></div>
<img :src="item.img" /> </div>
</div>
</div> <!-- layui -->
</div> <!-- vue -->
<!-- 轮播图 --> <!-- 组件配置信息 -->
<!-- 扩展插件配置信息 -->
<div id="breadcrumb"> <!-- 工具方法 -->
<span class="en">DATA SHOW</span> <script>
<span class="cn">轮播图管理展示</span> var vue = new Vue({
</div> el: '#app',
data: {
<!-- 图文列表 --> // 轮播图
<div class="recommend" :style='{"padding":"0","margin":"0px auto","flexWrap":"wrap","background":"none","display":"flex","width":"100%","position":"relative"}'> swiperList: [{
img: '../../img/banner.jpg'
}],
<form class="layui-form filter" :style='{"padding":"30px 20px 30px","borderColor":"#bcdbdf","margin":"20px 7% 0","alignItems":"center","background":"#fff","borderWidth":"1px 0px 2px","display":"flex","width":"100%","borderStyle":"outset","justifyContent":"center","height":"auto"}'> baseurl: '',
dataList: []
<div :style='{"alignItems":"center","margin":"0 4px 0 0","display":"flex"}' class="item-list"> },
<div class="lable" :style='{"width":"auto","padding":"0 10px","lineHeight":"42px"}'>名称</div> methods: {
<input type="text" :style='{"border":"1px solid #eee","padding":"0 10px","boxShadow":"0px 0px 0px #ccc","margin":"0","outline":"none","color":"#666","borderRadius":"30px","width":"140px","fontSize":"14px","lineHeight":"40px","height":"40px"}' name="name" id="name" placeholder="名称" autocomplete="off" class="layui-input"> isAuth(tablename, button) {
</div> return isFrontAuth(tablename, button)
},
<button :style='{"cursor":"pointer","padding":"0px 10px","margin":"0 10px 0","borderColor":"#feabab","color":"#fff","minWidth":"90px","outline":"none","borderRadius":"30px","background":"#40a8c4","borderWidth":"0px","width":"auto","fontSize":"14px","lineHeight":"42px","borderStyle":"dashed","height":"42px"}' id="btn-search" type="button" class="layui-btn layui-btn-normal"> jump(url) {
<i :style='{"color":"#fff","margin":"0 10px 0 0","fontSize":"14px"}' class="layui-icon layui-icon-search"></i>搜索 jump(url)
</button> }
<button :style='{"cursor":"pointer","padding":"0px 10px","margin":"0 4px 0 0","borderColor":"#fda100","color":"#fff","minWidth":"90px","outline":"none","borderRadius":"30px","background":"#f7aa00","borderWidth":"0px","width":"auto","fontSize":"14px","lineHeight":"42px","borderStyle":"solid","height":"42px"}' v-if="isAuth('config','新增')" @click="jump('../config/add.jsp')" type="button" class="layui-btn btn-theme"> }
<i :style='{"color":"#fff","margin":"0 10px 0 0","fontSize":"14px"}' class="layui-icon">&#xe654;</i>添加 })
</button> </script>
</form> </body>
</html>
<div :style='{"padding":"40px 0 20px","margin":"40px 7% 0px","borderColor":"#f3d7ca","background":"none","flex":"1","borderWidth":"0 0px 0 0","width":"100%","minWidth":"850px","borderStyle":"solid","order":"4"}' class="lists">
<!-- 样式二 -->
<div :style='{"padding":"0px","flexWrap":"wrap","background":"none","display":"flex","width":"100%","justifyContent":"space-between","height":"auto"}' class="list list-2">
<div :style='{"cursor":"pointer","padding":"10px","boxShadow":"0px 0px 0px #eee","margin":"0 0 100px","borderColor":"#ddd","display":"flex","justifyContent":"space-between","flexWrap":"wrap","background":"url(http://codegen.caihongy.cn/20230206/de4c50b5282f45f8a59707bce3185db8.png) no-repeat left bottom / 20%,url(http://codegen.caihongy.cn/20230206/5e80378b411c4449a860d66e35c5c969.png) no-repeat right top / 20%","borderWidth":"0px","width":"49%","position":"relative","borderStyle":"solid","height":"240px"}' @click="jump('../config/detail.jsp?id='+item.id)" v-for="(item,index) in dataList" :key="index" class="list-item animation-box">
<div :style='{"padding":"10px 10px","verticalAlign":"middle","boxShadow":"inset 0px 0px 0px 0px #f5eee6","borderColor":"#f3d7ca #f3d7ca #f3d7ca","alignItems":"flex-start","display":"flex","right":"30px","justifyContent":"center","top":"60px","borderRadius":"8px","flexWrap":"wrap","borderWidth":"0px 0px 0px","background":"none","width":"44%","position":"absolute","borderStyle":"solid","height":"90%"}' class="item-info">
<div v-if="item.price" :style='{"width":"100%","padding":"0px 4px","lineHeight":"24px","fontSize":"14px","color":"#f00","textAlign":"center"}' class="time">¥{{Number(item.price).toFixed(2)}}</div>
<div v-if="item.vipprice&&item.vipprice>0" :style='{"width":"100%","padding":"0px 4px","lineHeight":"24px","fontSize":"14px","color":"#f00","textAlign":"center"}' class="time">¥{{Number(item.vipprice).toFixed(2)}} 会员价</div>
<div v-if="item.jf" :style='{"width":"100%","padding":"0px 4px","lineHeight":"24px","fontSize":"14px","color":"#f00","textAlign":"center"}' class="time">{{Number(item.jf).toFixed(0)}}积分</div>
</div>
</div>
</div>
</div>
<div class="pager" id="pager"></div>
</div>
</div>
<!-- layui -->
<script src="../../layui/layui.js"></script>
<!-- vue -->
<script src="../../js/vue.js"></script>
<!-- 组件配置信息 -->
<script src="../../js/config.js"></script>
<!-- 扩展插件配置信息 -->
<script src="../../modules/config.js"></script>
<!-- 工具方法 -->
<script src="../../js/utils.js"></script>
<script type="text/javascript" src="../../js/jquery.js"></script>
<script>
var vue = new Vue({
el: '#app',
data: {
// 轮播图
swiperList: [{
img: '../../img/banner.jpg'
}],
baseurl: '',
dataList: []
},
methods: {
isAuth(tablename, button) {
return isFrontAuth(tablename, button)
},
jump(url) {
jump(url)
}
}
})
layui.use(['form', 'layer', 'element', 'carousel', 'laypage', 'http', 'jquery','laydate', 'slider'], function() {
var form = layui.form;
var layer = layui.layer;
var element = layui.element;
var carousel = layui.carousel;
var laypage = layui.laypage;
var http = layui.http;
var jquery = layui.jquery;
var laydate = layui.laydate;
var slider = layui.slider;
var limit = 12;
vue.baseurl = http.baseurl;
// 获取轮播图 数据
http.request('config/list', 'get', {
page: 1,
limit: 3
}, function(res) {
if (res.data.list.length > 0) {
let swiperList = [];
res.data.list.forEach(element => {
if (element.value != null) {
swiperList.push({
img: http.baseurl+element.value
});
}
});
vue.swiperList = swiperList;
vue.$nextTick(() => {
carousel.render({
elem: '#layui-carousel',
width: '100%',
height: '680px',
anim: 'default',
autoplay: 'true',
interval: '5000',
arrow: 'none',
indicator: 'inside'
});
})
}
});
// 分页列表
pageList();
// 搜索按钮
jquery('#btn-search').click(function(e) {
pageList();
});
function pageList() {
var param = {
page: 1,
limit: limit
}
if (jquery('#name').val()) {
param['name'] = jquery('#name').val() ? '%' + jquery('#name').val() + '%' : '';
}
if (jquery('#name').val()) {
param['name'] = jquery('#name').val() ? '%' + jquery('#name').val() + '%' : '';
}
// 获取列表数据 <!DOCTYPE html>
http.request('config/list', 'get', param, function(res) { <html lang="en">
vue.dataList = res.data.list <head>
// 分页 <meta charset="UTF-8">
laypage.render({ <title>Layui Example</title>
elem: 'pager', <!-- 引入layui的CSS文件 -->
count: res.data.total, <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/layui@2.7.6/dist/css/layui.css">
limit: limit, </head>
groups: 5, <body>
layout: ["count","prev","page","next","limit","skip"], <div id="app">
prev: '上一页', <!-- 轮播图容器 -->
next: '下一页', <div id="layui-carousel" class="layui-carousel" lay-filter="carousel"></div>
jump: function(obj, first) {
param.page = obj.curr; <!-- 搜索框和按钮 -->
//首次不执行 <div style="margin: 15px;">
if (!first) { <input type="text" id="name" placeholder="请输入名称" class="layui-input">
http.request('config/list', 'get', param, function(res) { <button id="btn-search" class="layui-btn">搜索</button>
vue.dataList = res.data.list </div>
})
} <!-- 列表容器 -->
} <div id="list-container"></div>
});
}) <!-- 分页容器 -->
} <div id="pager"></div>
}); </div>
</script>
</body> <!-- 引入layui的JS文件 -->
<script src="https://cdn.jsdelivr.net/npm/layui@2.7.6/dist/layui.all.js"></script>
<script>
layui.use(['form', 'layer', 'element', 'carousel', 'laypage', 'http', 'jquery','laydate', 'slider'], function() {
var form = layui.form;
var layer = layui.layer;
var element = layui.element;
var carousel = layui.carousel;
var laypage = layui.laypage;
var http = layui.http;
var jquery = layui.jquery;
var laydate = layui.laydate;
var slider = layui.slider;
var limit = 12;
vue.baseurl = http.baseurl;
// 获取轮播图数据
http.request('config/list', 'get', {
page: 1,
limit: 3
}, function(res) {
if (res.data.list.length > 0) {
let swiperList = [];
res.data.list.forEach(element => {
if (element.value != null) {
swiperList.push({
img: http.baseurl + element.value
});
}
});
vue.swiperList = swiperList;
vue.$nextTick(() => {
carousel.render({
elem: '#layui-carousel',
width: '100%',
height: '680px',
anim: 'default',
autoplay: 'true',
interval: '5000',
arrow: 'none',
indicator: 'inside'
});
})
}
});
// 分页列表
pageList();
// 搜索按钮
jquery('#btn-search').click(function(e) {
pageList();
});
function pageList() {
var param = {
page: 1,
limit: limit
}
if (jquery('#name').val()) {
param['name'] = jquery('#name').val() ? '%' + jquery('#name').val() + '%' : '';
}
// 获取列表数据
http.request('config/list', 'get', param, function(res) {
vue.dataList = res.data.list;
// 分页
laypage.render({
elem: 'pager',
count: res.data.total,
limit: limit,
groups: 5,
layout: ["count", "prev", "page", "next", "limit", "skip"],
prev: '上一页',
next: '下一页',
jump: function(obj, first) {
param.page = obj.curr;
// 首次不执行
if (!first) {
http.request('config/list', 'get', param, function(res) {
vue.dataList = res.data.list;
});
}
}
});
});
}
});
</script>
</body>
</html> </html>

@ -1,6 +1,4 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="true" %>
pageEncoding="UTF-8"%>
<%@ page isELIgnored="true" %>
<!-- 论坛中心 --> <!-- 论坛中心 -->
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
@ -16,18 +14,10 @@
<!-- 通用的css --> <!-- 通用的css -->
<link rel="stylesheet" href="../../css/common.css" /> <link rel="stylesheet" href="../../css/common.css" />
</head> </head>
<style>
.layui-laypage .layui-laypage-count {
padding: 0 10px;
}
.layui-laypage .layui-laypage-skip {
padding-left: 10px;
}
</style>
<body> <body>
<div id="app"> <div id="app">
<!-- 轮播图 --> <!-- 轮播图 -->
<div id="layui-carousel" class="layui-carousel"> <div id="layui-carousel" class="layui-carousel" lay-filter="carousel">
<div carousel-item> <div carousel-item>
<div class="layui-carousel-item" v-for="(item,index) in swiperList" :key="index"> <div class="layui-carousel-item" v-for="(item,index) in swiperList" :key="index">
<img :src="item.img" /> <img :src="item.img" />
@ -35,17 +25,14 @@
</div> </div>
</div> </div>
<!-- 轮播图 -->
<!-- 标题 --> <!-- 标题 -->
<div id="breadcrumb"> <div id="breadcrumb">
<span class="en">FORUM / INFORMATION</span> <span class="en">FORUM / INFORMATION</span>
<span class="cn">我的发布</span> <span class="cn">我的发布</span>
</div> </div>
<!-- 标题 -->
<div class="forum-container"> <div class="forum-container">
<table class="layui-table" lay-skin="nob"> <table class="layui-table nob" lay-skin="line">
<thead> <thead>
<tr> <tr>
<th>标题</th> <th>标题</th>
@ -54,89 +41,84 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr v-for="(item,index) in dataList" v-bind:key="index"> <tr v-for="(item,index) in dataList" v-key="index">
<td @click="jump('../forum/detail.jsp?id='+item.id);" style="text-align:left">{{item.title}}</td> <td @click="jump('../forum/detail.jsp?id='+item.id);" style="text-align:left">{{item.title}}</td>
<td style="text-align:left">{{item.addtime}}</td> <td style="text-align:left">{{item.addtime}}</td>
<td style="text-align:left"> <td style="text-align:left">
<button @click="jump('../forum/update.jsp?id='+item.id);" type="button" class="layui-btn layui-btn-radius btn-warm"> <button @click="jump('../forum/update.jsp?id='+item.id);" type="button" class="layui-btn layui-btn-radius btn-warm">
修改 修改
</button> </button>
<button @click="deleteClick(item.id)" type="button" class="layui-btn layui-btn-radius btn-theme"> <button @click="deleteClick(item.id)" type="button" class="layui-btn layui-btn-radius btn-theme">
删除 删除
</button> </button>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<div class="pager" id="pager"></div> <div class="pager" id="pager"></div>
</div> </div>
</div>
</div> <!-- layui -->
<script src="../../layui/layui.js"></script>
<!-- layui --> <!-- vue -->
<script src="../../layui/layui.js"></script> <script src="../../js/vue.js"></script>
<!-- vue --> <!-- 组件配置信息 -->
<script src="../../js/vue.js"></script> <script src="../../js/component.js"></script>
<!-- 组件配置信息 --> <!-- 扩展插件配置信息 -->
<script src="../../js/config.js"></script> <script src="../../js/extend.js"></script>
<!-- 扩展插件配置信息 --> <!-- 工具方法 -->
<script src="../../modules/config.js"></script> <script src="../../js/tool.js"></script>
<!-- 工具方法 --> <script>
<script src="../../js/utils.js"></script> var vue = new Vue({
el: '#app',
<script> // 轮播图
var vue = new Vue({ data: {
el: '#app', // 轮播图
data: { swiperList: [],
// 轮播图 // 列表数据
swiperList: [{ dataList: []
img: '../../img/banner.jpg' },
}], filters: {
dataList: [] newsDesc: function(val) {
}, if (val) {
filters: { if (val.length > 200) {
newsDesc: function(val) { return val.substring(0, 200) + '...';
if (val) { } else {
if (val.length > 200) { return val.replace(/<\/?[^>]+>/g, '').replace(/undefined/g, '');
return val.substring(0, 200).replace(/<[^>]*>/g).replace(/undefined/g, ''); }
} else { }
return val.replace(/<[^>]*>/g).replace(/undefined/g, ''); return '';
} }
} },
return ''; methods: {
} jump(url) {
}, jump(url)
methods: { },
jump(url) { deleteClick(id) {
jump(url) layui.layer.confirm('是否确认删除?', {
}, btn: ['删除', '取消'] //按钮
deleteClick(id) { }, function() {
layui.layer.confirm('是否确认删除?', { layui.http.requestJson(`forum/delete`, 'post', [id], function() {
btn: ['删除', '取消'] //按钮 layer.msg('删除成功', {
}, function() { time: 2000,
layui.http.requestJson(`forum/delete`, 'post', [id], function(res) { icon: 6,
layer.msg('删除成功', { }, function() {
time: 2000, window.location.reload();
icon: 6 });
}, function(res) { })
window.location.reload(); });
}); }
}) }
}); });
} layui.use(['layer', 'element', 'carousel', 'laypage', 'http', 'jquery'], function() {
} var layer = layui.layer;
}) var element = layui.element;
var carousel = layui.carousel;
layui.use(['layer', 'element', 'carousel', 'laypage', 'http', 'jquery'], function() { var laypage = layui.laypage;
var layer = layui.layer; var http = layui.http;
var element = layui.element; var jquery = layui.jquery;
var carousel = layui.carousel;
var laypage = layui.laypage;
var http = layui.http;
var jquery = layui.jquery;
var limit = 10;
var limit = 10;
// 获取轮播图 数据 // 获取轮播图 数据
http.request('config/list', 'get', { http.request('config/list', 'get', {
page: 1, page: 1,
@ -145,11 +127,11 @@
if (res.data.list.length > 0) { if (res.data.list.length > 0) {
let swiperList = []; let swiperList = [];
res.data.list.forEach(element => { res.data.list.forEach(element => {
if (element.value != null) { if (element.value != null) {
swiperList.push({ swiperList.push({
img: http.baseurl+element.value img: httpbaseurl+element.value
}); });
} }
}); });
vue.swiperList = swiperList; vue.swiperList = swiperList;
@ -167,37 +149,35 @@
}) })
} }
}); });
// 获取列表数据
// 获取列表数据 http.request('forum/page?parentid=0&sort=addtime&order=desc', 'get', {
http.request('forum/page?parentid=0&sort=addtime&order=desc', 'get', { page: 1,
page: 1,
limit: limit limit: limit
}, function(res) { }, function(res) {
vue.dataList = res.data.list vue.dataList = res.data.list;
// 分页 // 分页
laypage.render({ laypage.render({
elem: 'pager', elem: 'pager',
count: res.data.total, count: res.data.total,
limit: limit, limit: limit,
groups: 5, groups: 5,
layout: ["count","prev","page","next","limit","skip"], layout: ["count","prev","page","next","limit","skip"],
prev: '上一页', prev: '上一页',
next: '下一页', next: '下一页',
jump: function(obj, first) { jump: function(obj, first) {
//首次不执行 //首次不执行
if (!first) { if (!first) {
http.request('forum/page?parentid=0&sort=addtime&order=desc', 'get', { http.request('forum/page?parentid=0&sort=addtime&order=desc', 'get', {
page: obj.curr, page: obj.curr,
limit: obj.limit limit: obj.limit
}, function(res) { }, function(res) {
vue.dataList = res.data.list vue.dataList = res.data.list;
}) });
} }
} }
}); });
}) });
});
}); </script>
</script> </body>
</body>
</html> </html>

@ -1,203 +1,191 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="true" %>
pageEncoding="UTF-8"%>
<%@ page isELIgnored="true" %>
<!-- 论坛中心 --> <!-- 论坛中心 -->
<!DOCTYPE html> <!DOCTYPE html>
<html> <meta charset="utf-8">
<head> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta charset="utf-8"> <title>论坛</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <!-- 样式 -->
<title>论坛</title> <link rel="stylesheet" href="../../layui/css/layui.css">
<link rel="stylesheet" href="../../layui/css/layui.css"> <!-- 主题颜色(主要颜色设置) -->
<!-- 样式 --> <link rel="stylesheet" href="../../css/theme.css" />
<link rel="stylesheet" href="../../css/style.css" /> <!-- 通用的css -->
<!-- 主题(主要颜色设置) --> <link rel="stylesheet" href="../../css/common.css" />
<link rel="stylesheet" href="../../css/theme.css" /> <style>
<!-- 通用的css --> .forum-container .btn-container {
<link rel="stylesheet" href="../../css/common.css" /> display: flex;
</head> align-items: center;
<style> box-sizing: border-box;
.forum-container .btn-container { width: 100%;
display: flex; }
align-items: center;
box-sizing: border-box;
width: 100%;
}
.forum-container .btn-container #title {
padding: 0 10px;
flex: 1;
margin-right: 10px;
}
.forum-container .btn-container button {
height: 38px;
line-height: 38px;
width: auto;
margin: 0 0 0 10px;
}
</style>
<body>
<div id="app">
<!-- 轮播图 -->
<div id="layui-carousel" class="layui-carousel">
<div carousel-item>
<div class="layui-carousel-item" v-for="(item,index) in swiperList" :key="index">
<img :src="item.img" />
</div>
</div>
</div>
<!-- 轮播图 -->
<!-- 标题 --> .forum-container .btn-container #title {
<div id="breadcrumb"> padding: 0 10px;
<span class="en">FORUM / INFORMATION</span> flex: 1;
<span class="cn">论坛</span> margin-right: 10px;
</div> }
<!-- 标题 -->
<div class="forum-container"> .forum-container .btn-container button {
<div class="btn-container"> height: 38px;
<input type="text" name="title" id="title" placeholder="标题" autocomplete="off" class="layui-input"> line-height: 38px;
<button id="btn-search" type="button" class="layui-btn layui-btn-normal"> width: auto;
<i class="layui-icon layui-icon-search"></i>搜索 margin: 0 0 0 10px;
</button> }
<button @click="jump('../forum/add.jsp')" type="button" class="layui-btn btn-theme"> </style>
<i class="layui-icon">&#xe654;</i> 发布帖子 </head>
</button> <body>
</div> <div id="app">
<div class="forum-list"> <!-- 轮播图 -->
<div v-for="(item,index) in dataList" v-bind:key="index" href="javascript:void(0);" @click="jump('../forum/detail.jsp?id='+item.id);" class="forum-item"> <div id="layui-carousel" class="layui-carousel">
<h2 class="h2">{{item.title}}(发布人:{{item.username}}</h2> <div carousel-item>
<div class="create-time"> <div class="layui-carousel-item" v-for="(item,index) in swiperList" key="index">
{{item.addtime}} <img :src="item.img" />
</div>
</div>
</div>
<div class="pager" id="pager"></div>
</div> </div>
</div> </div>
</div>
<!-- 轮播图 -->
<!-- layui --> <!-- 标题 -->
<script src="../../layui/layui.js"></script> <div id="breadcrumb">
<!-- vue --> <span class="en">FORUM / INFORMATION</span>
<script src="../../js/vue.js"></script> <span class="cn">论坛</span>
<!-- 组件配置信息 --> </div>
<script src="../../js/config.js"></script> <!-- 标题 -->
<!-- 扩展插件配置信息 -->
<script src="../../modules/config.js"></script>
<!-- 工具方法 -->
<script src="../../js/utils.js"></script>
<script> <div class="forum-container">
var vue = new Vue({ <div class="btn-container">
el: '#app', <input type="text" name="title" id="title" placeholder="请输入标题" autocomplete="off" class="layui-input">
data: { <button id="btn-search" type="button" class="layui-btn layui-btn-normal">
// 轮播图 <i class="layui-icon layui-icon-search"></i>搜索
swiperList: [{ </button>
img: '../../img/banner.jpg' <button @click="jump('../forum/add.jsp')" type="button" class="layui-btn btn-theme">
}], <i class="layui-icon">&#xe654;</i> 发布帖子
dataList: [] </button>
}, </div>
filters: { <div class="forum-list">
newsDesc: function(val) { <div v-for="(item,index) in dataList" v-bind:key="index" href="void(0);" @click="jump('../forum/detail.jsp?id='+item.id)" class="forum-item">
if (val) { <h2 class="h2">{{item.title}}(发布人:{{item.username}}</h2>
if (val.length > 200) { <div class="create-time">
return val.substring(0, 200).replace(/<[^>]*>/g).replace(/undefined/g, ''); {{item.addtime}}
} else { </div>
return val.replace(/<[^>]*>/g).replace(/undefined/g, ''); </div>
} </div>
} <div class="pager" id="pager"></div>
return ''; </div>
} </div>
}, <!-- 轮播图 -->
methods: { <!-- 标题 -->
jump(url) { <!-- 组件配置信息 -->
jump(url) <!-- 扩展插件配置信息 -->
} <!-- 工具方法 -->
}
})
layui.use(['layer', 'element', 'carousel', 'laypage', 'http', 'jquery'], function() { <script>
var layer = layui.layer; var vue = new Vue({
var element = layui.element; el: '#app',
var carousel = layui.carousel; data: {
var laypage = layui.laypage; // 轮播图
var http = layui.http; swiperList: [{
var jquery = layui.jquery; img: '../../img/banner.jpg'
}],
dataList: []
},
filters: {
newsDesc: function(val) {
if (val) {
if (val.length > 200) {
return val.substring(0, 200).replace(/<[^>]*>/g).replace(/undefined/g, '');
} else {
return val.replace(/<[^>]*>/g).replace(/undefined/g, '');
}
}
return '';
}
},
methods: {
jump(url) {
jump(url)
}
}
})
var limit = 10; layui.use(['layer', 'element', 'carousel', 'laypage', 'http', 'jquery'], function() {
var layer = layui.layer;
var element = layui.element;
var carousel = layui.carousel;
var laypage = layui.laypage;
var http = layui.http;
var jquery = layui.jquery;
// 获取轮播图 数据 var limit = 10;
http.request('config/list', 'get', {
page: 1,
limit: 3
}, function(res) {
if (res.data.list.length > 0) {
let swiperList = [];
res.data.list.forEach(element => {
if (element.value != null) {
swiperList.push({
img: http.baseurl+element.value
});
}
});
vue.swiperList = swiperList;
vue.$nextTick(() => { // 获取轮播图 数据
carousel.render({ http.request('config/list', 'get', {
elem: '#layui-carousel', page: 1,
width: '100%', limit: 3
height: '680px', }, function(res) {
anim: 'default', if (res.data.list.length > 0) {
autoplay: 'true', let swiperList = [];
interval: '5000', res.data.list.forEach(element => {
arrow: 'none', if (element.value != null) {
indicator: 'inside' swiperList.push({
}); img: http.baseurl+element.value
}) });
} }
}); });
vue.swiperList = swiperList;
pageList(); vue.$nextTick(() => {
carousel.render({
elem: '#layui-carousel',
width: '100%',
height: '680px',
anim: 'default',
autoplay: 'true',
interval: '5000',
arrow: 'none',
indicator: 'inside'
});
})
}
});
// 搜索按钮 pageList();
jquery('#btn-search').click(function(e) {
pageList();
});
function pageList() {
// 获取列表数据
http.request('forum/flist?isdone=开放&sort=addtime&order=desc', 'get', {
page: 1,
limit: limit,
title: '%' + jquery('#title').val() + '%',
}, function(res) {
vue.dataList = res.data.list
// 分页
laypage.render({
elem: 'pager',
count: res.data.total,
limit: limit,
groups: 5,
layout: ["count","prev","page","next","limit","skip"],
prev: '上一页',
next: '下一页',
jump: function(obj, first) {
//首次不执行
if (!first) {
http.request('forum/flist?isdone=开放&sort=addtime&order=desc', 'get', {
page: obj.curr,
limit: obj.limit
}, function(res) {
vue.dataList = res.data.list
})
}
}
});
})
}
}); // 搜索按钮
</script> jquery('#btn-search').click(function(e) {
</body> pageList();
});
function pageList() {
// 获取列表数据
http.request('forum/flist?isdone=开放&sort=addtime&order=desc', 'get', {
page: 1,
limit: limit,
title: '%' + jquery('#title').val() + '%',
}, function(res) {
vue.dataList = res.data.list
// 分页
laypage.render({
elem: 'pager',
count: res.data.total,
limit: limit,
groups: 5,
layout: ["count","prev","page","next","limit","skip"],
prev: '上一页',
next: '下一页',
jump: function(obj, first) {
//首次不执行
if (!first) {
http.request('forum/flist?isdone=开放&sort=addtime&order=desc', 'get', {
page: obj.curr,
limit: obj.limit
}, function(res) {
vue.dataList = res.data.list
})
}
}
});
})
}
});
</script>
</body>
</html> </html>

@ -9,6 +9,7 @@
//清空上次查选的痕迹 //清空上次查选的痕迹
editor.firstForSR = 0; editor.firstForSR = 0;
editor.currentRangeForSR = null; editor.currentRangeForSR = null;
//给tab注册切换事件 //给tab注册切换事件
/** /**
* tab点击处理事件 * tab点击处理事件
@ -16,51 +17,53 @@ editor.currentRangeForSR = null;
* @param tabBodys * @param tabBodys
* @param obj * @param obj
*/ */
function clickHandler( tabHeads,tabBodys,obj ) { function clickHandler(tabHeads, tabBodys, obj) {
//head样式更改 //head样式更改
for ( var k = 0, len = tabHeads.length; k < len; k++ ) { for (var k = 0, len = tabHeads.length; k < len; k++) {
tabHeads[k].className = ""; tabHeads[k].className = "";
} }
obj.className = "focus"; obj.className = "focus";
//body显隐 //body显隐
var tabSrc = obj.getAttribute( "tabSrc" ); var tabSrc = obj.getAttribute("tabSrc");
for ( var j = 0, length = tabBodys.length; j < length; j++ ) { for (var j = 0, length = tabBodys.length; j < length; j++) {
var body = tabBodys[j], var body = tabBodys[j],
id = body.getAttribute( "id" ); id = body.getAttribute("id");
if ( id != tabSrc ) { if (id != tabSrc) {
body.style.zIndex = 1; body.style.zIndex = 1;
} else { } else {
body.style.zIndex = 200; body.style.zIndex = 200;
} }
} }
} }
/** /**
* TAB切换 * TAB切换
* @param tabParentId tab的父节点ID或者对象本身 * @param tabParentId tab的父节点ID或者对象本身
*/ */
function switchTab( tabParentId ) { function switchTab(tabParentId) {
var tabElements = $G( tabParentId ).children, var tabElements = $G(tabParentId).children,
tabHeads = tabElements[0].children, tabHeads = tabElements[0].children,
tabBodys = tabElements[1].children; tabBodys = tabElements[1].children;
for ( var i = 0, length = tabHeads.length; i < length; i++ ) { for (var i = 0, length = tabHeads.length; i < length; i++) {
var head = tabHeads[i]; var head = tabHeads[i];
if ( head.className === "focus" )clickHandler(tabHeads,tabBodys, head ); if (head.className === "focus") clickHandler(tabHeads, tabBodys, head);
head.onclick = function () { head.onclick = function () {
clickHandler(tabHeads,tabBodys,this); clickHandler(tabHeads, tabBodys, this);
} };
} }
} }
$G('searchtab').onmousedown = function(){
$G('searchtab').onclick = function () {
$G('search-msg').innerHTML = ''; $G('search-msg').innerHTML = '';
$G('replace-msg').innerHTML = '' $G('replace-msg').innerHTML = '';
} };
//是否区分大小写 //是否区分大小写
function getMatchCase(id) { function getMatchCase(id) {
return $G(id).checked ? true : false; return $G(id).checked ? true : false;
} }
//查找 //查找
$G("nextFindBtn").onclick = function (txt, dir, mcase) { $G("nextFindBtn").onclick = function (txt, dir, mcase) {
var findtxt = $G("findtxt").value, obj; var findtxt = $G("findtxt").value, obj;
@ -68,56 +71,58 @@ $G("nextFindBtn").onclick = function (txt, dir, mcase) {
return false; return false;
} }
obj = { obj = {
searchStr:findtxt, searchStr: findtxt,
dir:1, dir: 1,
casesensitive:getMatchCase("matchCase") casesensitive: getMatchCase("matchCase")
}; };
if (!frCommond(obj)) { if (!frCommond(obj)) {
var bk = editor.selection.getRange().createBookmark(); var bk = editor.selection.getRange().createBookmark();
$G('search-msg').innerHTML = lang.getEnd; $G('search-msg').innerHTML = lang.getEnd;
editor.selection.getRange().moveToBookmark(bk).select(); editor.selection.getRange().moveToBookmark(bk).select();
} }
}; };
$G("nextReplaceBtn").onclick = function (txt, dir, mcase) { $G("nextReplaceBtn").onclick = function (txt, dir, mcase) {
var findtxt = $G("findtxt1").value, obj; var findtxt = $G("findtxt1").value, obj;
if (!findtxt) { if (!findtxt) {
return false; return false;
} }
obj = { obj = {
searchStr:findtxt, searchStr: findtxt,
dir:1, dir: 1,
casesensitive:getMatchCase("matchCase1") casesensitive: getMatchCase("matchCase1")
}; };
frCommond(obj); frCommond(obj);
}; };
$G("preFindBtn").onclick = function (txt, dir, mcase) { $G("preFindBtn").onclick = function (txt, dir, mcase) {
var findtxt = $G("findtxt").value, obj; var findtxt = $G("findtxt").value, obj;
if (!findtxt) { if (!findtxt) {
return false; return false;
} }
obj = { obj = {
searchStr:findtxt, searchStr: findtxt,
dir:-1, dir: -1,
casesensitive:getMatchCase("matchCase") casesensitive: getMatchCase("matchCase")
}; };
if (!frCommond(obj)) { if (!frCommond(obj)) {
$G('search-msg').innerHTML = lang.getStart; $G('search-msg').innerHTML = lang.getStart;
} }
}; };
$G("preReplaceBtn").onclick = function (txt, dir, mcase) { $G("preReplaceBtn").onclick = function (txt, dir, mcase) {
var findtxt = $G("findtxt1").value, obj; var findtxt = $G("findtxt1").value, obj;
if (!findtxt) { if (!findtxt) {
return false; return false;
} }
obj = { obj = {
searchStr:findtxt, searchStr: findtxt,
dir:-1, dir: -1,
casesensitive:getMatchCase("matchCase1") casesensitive: getMatchCase("matchCase1")
}; };
frCommond(obj); frCommond(obj);
}; };
//替换 //替换
$G("repalceBtn").onclick = function () { $G("repalceBtn").onclick = function () {
var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj, var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj,
@ -129,13 +134,14 @@ $G("repalceBtn").onclick = function () {
return false; return false;
} }
obj = { obj = {
searchStr:findtxt, searchStr: findtxt,
dir:1, dir: 1,
casesensitive:getMatchCase("matchCase1"), casesensitive: getMatchCase("matchCase1"),
replaceStr:replacetxt replaceStr: replacetxt
}; };
frCommond(obj); frCommond(obj);
}; };
//全部替换 //全部替换
$G("repalceAllBtn").onclick = function () { $G("repalceAllBtn").onclick = function () {
var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj, var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj,
@ -147,18 +153,20 @@ $G("repalceAllBtn").onclick = function () {
return false; return false;
} }
obj = { obj = {
searchStr:findtxt, searchStr: findtxt,
casesensitive:getMatchCase("matchCase1"), casesensitive: getMatchCase("matchCase1"),
replaceStr:replacetxt, replaceStr: replacetxt,
all:true all: true
}; };
var num = frCommond(obj); var num = frCommond(obj);
if (num) { if (num) {
$G('replace-msg').innerHTML = lang.countMsg.replace("{#count}", num); $G('replace-msg').innerHTML = lang.countMsg.replace("{#count}", num);
} }
}; };
//执行 //执行
var frCommond = function (obj) { var frCommond = function (obj) {
return editor.execCommand("searchreplace", obj); return editor.execCommand("searchreplace", obj);
}; };
switchTab("searchtab");
switchTab("searchtab"); //注释代码
Loading…
Cancel
Save