Commit cf76c708 authored by 赵啸非's avatar 赵啸非

添加新闻列表与详细小程序接口

parent f2cfc79f
...@@ -44,9 +44,9 @@ ...@@ -44,9 +44,9 @@
{type: "selection", width: 60}, {type: "selection", width: 60},
{type: "index",label: "序号",width: 50}, {type: "index",label: "序号",width: 50},
{label: "用户ID,", prop: "userId", formatter: this.formatter}, {label: "用户", prop: "userId", formatter: this.formatter},
{label: "员工ID", prop: "staffId", formatter: this.formatter}, {label: "员工", prop: "staffId", formatter: this.formatter},
{label: "创建用户", prop: "createUserId", formatter: this.formatter}, {label: "创建用户", prop: "createUserId", formatter: this.formatter},
{ {
......
...@@ -44,9 +44,9 @@ ...@@ -44,9 +44,9 @@
{type: "selection", width: 60}, {type: "selection", width: 60},
{type: "index",label: "序号",width: 50}, {type: "index",label: "序号",width: 50},
{label: "用户ID,", prop: "userId", formatter: this.formatter}, {label: "用户", prop: "userId", formatter: this.formatter},
{label: "新闻ID", prop: "newsId", formatter: this.formatter}, {label: "新闻", prop: "newsId", formatter: this.formatter},
{label: "创建用户", prop: "createUserId", formatter: this.formatter}, {label: "创建用户", prop: "createUserId", formatter: this.formatter},
{ {
......
...@@ -44,9 +44,9 @@ ...@@ -44,9 +44,9 @@
{type: "selection", width: 60}, {type: "selection", width: 60},
{type: "index",label: "序号",width: 50}, {type: "index",label: "序号",width: 50},
{label: "用户ID,", prop: "userId", formatter: this.formatter}, {label: "用户", prop: "userId", formatter: this.formatter},
{label: "页面ID", prop: "pageId", formatter: this.formatter}, {label: "页面", prop: "pageId", formatter: this.formatter},
{label: "创建用户", prop: "createUserId", formatter: this.formatter}, {label: "创建用户", prop: "createUserId", formatter: this.formatter},
{ {
......
...@@ -44,9 +44,9 @@ ...@@ -44,9 +44,9 @@
{type: "selection", width: 60}, {type: "selection", width: 60},
{type: "index",label: "序号",width: 50}, {type: "index",label: "序号",width: 50},
{label: "用户ID,", prop: "userId", formatter: this.formatter}, {label: "用户", prop: "userId", formatter: this.formatter},
{label: "产品ID, 关联到产品表中的ID,表示这是哪个产品的收藏", prop: "productId", formatter: this.formatter}, {label: "产品", prop: "productId", formatter: this.formatter},
{label: "创建用户", prop: "createUserId", formatter: this.formatter}, {label: "创建用户", prop: "createUserId", formatter: this.formatter},
{ {
......
package com.mortals.xhx.busiz;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public abstract class BaseReq implements Serializable {
/**
* 当前页
*/
private Integer page;
/**
* 每页条数
*/
private Integer size;
private String phone;
}
package com.mortals.xhx.busiz.applets;
import lombok.Data;
/**
* @author karlhoo
*/
@Data
public class ApiResp<T> {
/**
* 结果编码
*/
private int code;
/**
* 结果描述
*/
private String msg;
/**
* 响应数据
*/
private T data;
}
package com.mortals.xhx.busiz.applets.req;
import com.mortals.xhx.busiz.BaseReq;
import lombok.Data;
/**
* 新闻请求
*
* @author: zxfei
* @date: 2023/10/7 16:53
*/
@Data
public class NewsReq extends BaseReq {
private Long id;
}
package com.mortals.xhx.busiz.applets.rsp;
import lombok.Data;
import java.util.Date;
@Data
public class NewsListInfo {
/**
* id
*/
private Long id;
/**
* 标题
*/
private String title;
/**
* 标题logo
*/
private String titleLogoPath;
/**
* 发布时间
*/
private Date publishTime;
}
package com.mortals.xhx.busiz.applets.web;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.web.BaseJsonBodyController;
import com.mortals.xhx.busiz.BaseReq;
import org.springframework.util.ObjectUtils;
import java.util.Map;
import static com.mortals.framework.ap.SysConstains.*;
public abstract class AbstractBaseController<T extends BaseReq> extends BaseJsonBodyController {
protected PageInfo buildPageInfo(T query) {
PageInfo pageInfo = new PageInfo();
if (!ObjectUtils.isEmpty(query) && !ObjectUtils.isEmpty(query.getPage())) {
pageInfo.setCurrPage(query.getPage());
}
if (!ObjectUtils.isEmpty(query) && !ObjectUtils.isEmpty(query.getSize())) {
pageInfo.setPrePageResult(query.getSize());
}
return pageInfo;
}
protected void parsePageInfo(Map<String, Object> model, PageInfo pageInfo) {
model.put(TOTAL, pageInfo.getTotalResult());
model.put(PER_PAGE, pageInfo.getPrePageResult());
model.put(CURRENT_PAGE, pageInfo.getCurrPage());
model.put(LAST_PAGE, pageInfo.getTotalPage());
model.put(PAGEINFO_KEY, pageInfo);
}
}
package com.mortals.xhx.busiz.applets.web;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.base.system.user.model.UserQuery;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.busiz.applets.req.NewsReq;
import com.mortals.xhx.busiz.applets.rsp.NewsListInfo;
import com.mortals.xhx.common.code.ProcessStatusEnum;
import com.mortals.xhx.common.utils.BeanUtil;
import com.mortals.xhx.module.dept.model.DeptQuery;
import com.mortals.xhx.module.dept.service.DeptService;
import com.mortals.xhx.module.news.model.NewsCategoryQuery;
import com.mortals.xhx.module.news.model.NewsEntity;
import com.mortals.xhx.module.news.model.NewsQuery;
import com.mortals.xhx.module.news.service.NewsCategoryService;
import com.mortals.xhx.module.news.service.NewsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import static com.mortals.framework.ap.SysConstains.*;
import static com.mortals.xhx.common.key.ErrorCode.ERROR_TOKEN_EXPIRED;
import static com.mortals.xhx.common.key.ErrorCode.ERROR_TOKEN_EXPIRED_CONTENT;
/**
* 小程序 新闻列表
*
* @author: zxfei
* @date: 2023/10/7 16:57
*/
@RestController
@Slf4j
@RequestMapping("/api/v1/news")
public class NewsApiController extends AbstractBaseController<NewsReq> {
@Autowired
private ParamService paramService;
@Autowired
private NewsService newsService;
@Autowired
private NewsCategoryService newsCategoryService;
@Autowired
private DeptService deptService;
@Autowired
private UserService userService;
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "top", paramService.getParamBySecondOrganize("News", "top"));
this.addDict(model, "viewNums", paramService.getParamBySecondOrganize("News", "viewNums"));
this.addDict(model, "categoryId", newsCategoryService.find(new NewsCategoryQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getName(), (o, n) -> n)));
this.addDict(model, "deptId", deptService.find(new DeptQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getDeptName(), (o, n) -> n)));
this.addDict(model, "createUserId", userService.find(new UserQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getRealName(), (o, n) -> n)));
}
/**
* 申诉列表
*/
@PostMapping(value = "list")
public Rest<Object> newsList(@RequestBody NewsReq newsReq) {
String busiDesc = "新闻列表";
log.info("【{}】【请求体】--> {}", busiDesc, JSONObject.toJSONString(newsReq));
Rest<Object> rest = Rest.ok();
Map<String, Object> model = new HashMap<>();
Context context = this.getContext();
if (ObjectUtils.isEmpty(context) || ObjectUtils.isEmpty(context.getUser())) {
throw new AppException(ERROR_TOKEN_EXPIRED, ERROR_TOKEN_EXPIRED_CONTENT);
}
try {
PageInfo pageInfo = buildPageInfo(newsReq);
NewsQuery query = new NewsQuery();
query.setOrderColList(Arrays.asList(new OrderCol("createTime", OrderCol.DESCENDING)));
Result<NewsEntity> result = newsService.find(query, pageInfo, context);
List<NewsListInfo> collect = result.getList().stream().map(item -> {
NewsListInfo newsListInfo = new NewsListInfo();
BeanUtils.copyProperties(item, newsListInfo, BeanUtil.getNullPropertyNames(item));
return newsListInfo;
}).collect(Collectors.toList());
model.put(KEY_RESULT_DATA, collect);
model.put(PAGEINFO_KEY, result.getPageInfo());
super.parsePageInfo(model, result.getPageInfo());
rest.setData(model);
this.init(model, context);
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
log.error(busiDesc, e);
rest = Rest.fail(super.convertException(e));
}
return rest;
}
/**
* 新闻详细
*/
@PostMapping(value = "info")
public Rest<NewsEntity> appealInfo(@RequestBody NewsReq newsReq) {
String busiDesc = "新闻详细";
log.info("【{}】【请求体】--> {}", busiDesc, JSONObject.toJSONString(newsReq));
Rest<NewsEntity> rest = Rest.ok(busiDesc + " 【成功】");
Context context = this.getContext();
Map<String, Object> model = new HashMap<>();
try {
if (ObjectUtils.isEmpty(newsReq.getId())) {
throw new AppException("详细查询id不能为空!");
}
NewsEntity newsEntity = newsService.get(newsReq.getId(), context);
rest.setData(newsEntity);
this.init(model, context);
rest.setDict(model.get("dict"));
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
log.error(busiDesc, e);
rest = Rest.fail(super.convertException(e));
}
return rest;
}
}
package com.mortals.xhx.module.favorites.service.impl; package com.mortals.xhx.module.favorites.service.impl;
import com.mortals.framework.model.PageInfo;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.service.StaffService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
...@@ -7,15 +13,37 @@ import com.mortals.xhx.module.favorites.dao.FavoritesBusinesscardDao; ...@@ -7,15 +13,37 @@ import com.mortals.xhx.module.favorites.dao.FavoritesBusinesscardDao;
import com.mortals.xhx.module.favorites.model.FavoritesBusinesscardEntity; import com.mortals.xhx.module.favorites.model.FavoritesBusinesscardEntity;
import com.mortals.xhx.module.favorites.service.FavoritesBusinesscardService; import com.mortals.xhx.module.favorites.service.FavoritesBusinesscardService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.List;
/** /**
* FavoritesBusinesscardService * FavoritesBusinesscardService
* 收藏名片 service实现 * 收藏名片 service实现
* *
* @author zxfei * @author zxfei
* @date 2023-10-07 * @date 2023-10-07
*/ */
@Service("favoritesBusinesscardService") @Service("favoritesBusinesscardService")
@Slf4j @Slf4j
public class FavoritesBusinesscardServiceImpl extends AbstractCRUDServiceImpl<FavoritesBusinesscardDao, FavoritesBusinesscardEntity, Long> implements FavoritesBusinesscardService { public class FavoritesBusinesscardServiceImpl extends AbstractCRUDServiceImpl<FavoritesBusinesscardDao, FavoritesBusinesscardEntity, Long> implements FavoritesBusinesscardService {
@Autowired
private StaffService staffService;
@Autowired
private UserService userService;
@Override
protected void findAfter(FavoritesBusinesscardEntity params, PageInfo pageInfo, Context context, List<FavoritesBusinesscardEntity> list) throws AppException {
list.forEach(item->{
StaffEntity staffCache = staffService.getCache(item.getStaffId().toString());
});
}
} }
\ No newline at end of file
package com.mortals.xhx.module.favorites.web; package com.mortals.xhx.module.favorites.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.base.system.user.model.UserQuery;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.module.staff.model.StaffQuery;
import com.mortals.xhx.module.staff.service.StaffService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -36,6 +40,12 @@ public class FavoritesBusinesscardController extends BaseCRUDJsonBodyMappingCont ...@@ -36,6 +40,12 @@ public class FavoritesBusinesscardController extends BaseCRUDJsonBodyMappingCont
@Autowired @Autowired
private ParamService paramService; private ParamService paramService;
@Autowired
private UserService userService;
@Autowired
private StaffService staffService;
public FavoritesBusinesscardController(){ public FavoritesBusinesscardController(){
super.setModuleDesc( "收藏名片"); super.setModuleDesc( "收藏名片");
} }
...@@ -43,6 +53,13 @@ public class FavoritesBusinesscardController extends BaseCRUDJsonBodyMappingCont ...@@ -43,6 +53,13 @@ public class FavoritesBusinesscardController extends BaseCRUDJsonBodyMappingCont
@Override @Override
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
super.init(model, context); super.init(model, context);
this.addDict(model, "userId", userService.find(new UserQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getRealName(), (o, n) -> n)));
this.addDict(model, "staffId", staffService.find(new StaffQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getName(), (o, n) -> n)));
this.addDict(model, "createUserId", userService.find(new UserQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getRealName(), (o, n) -> n)));
} }
......
package com.mortals.xhx.module.favorites.web; package com.mortals.xhx.module.favorites.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.base.system.user.model.UserQuery;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.module.news.model.NewsQuery;
import com.mortals.xhx.module.news.service.NewsService;
import com.mortals.xhx.module.staff.model.StaffQuery;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -35,6 +41,11 @@ public class FavoritesNewsController extends BaseCRUDJsonBodyMappingController<F ...@@ -35,6 +41,11 @@ public class FavoritesNewsController extends BaseCRUDJsonBodyMappingController<F
@Autowired @Autowired
private ParamService paramService; private ParamService paramService;
@Autowired
private NewsService newsService;
@Autowired
private UserService userService;
public FavoritesNewsController(){ public FavoritesNewsController(){
super.setModuleDesc( "收藏新闻"); super.setModuleDesc( "收藏新闻");
...@@ -42,6 +53,12 @@ public class FavoritesNewsController extends BaseCRUDJsonBodyMappingController<F ...@@ -42,6 +53,12 @@ public class FavoritesNewsController extends BaseCRUDJsonBodyMappingController<F
@Override @Override
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "userId", userService.find(new UserQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getRealName(), (o, n) -> n)));
this.addDict(model, "newsId", newsService.find(new NewsQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getTitle(), (o, n) -> n)));
this.addDict(model, "createUserId", userService.find(new UserQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getRealName(), (o, n) -> n)));
super.init(model, context); super.init(model, context);
} }
......
package com.mortals.xhx.module.favorites.web; package com.mortals.xhx.module.favorites.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.base.system.user.model.UserQuery;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.module.page.model.PageQuery;
import com.mortals.xhx.module.page.service.PageService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -36,12 +40,22 @@ public class FavoritesPagesController extends BaseCRUDJsonBodyMappingController< ...@@ -36,12 +40,22 @@ public class FavoritesPagesController extends BaseCRUDJsonBodyMappingController<
@Autowired @Autowired
private ParamService paramService; private ParamService paramService;
@Autowired
private UserService userService;
@Autowired
private PageService pageService;
public FavoritesPagesController(){ public FavoritesPagesController(){
super.setModuleDesc( "收藏页面"); super.setModuleDesc( "收藏页面");
} }
@Override @Override
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "userId", userService.find(new UserQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getRealName(), (o, n) -> n)));
this.addDict(model, "pageId", pageService.find(new PageQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getPageName(), (o, n) -> n)));
this.addDict(model, "createUserId", userService.find(new UserQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getRealName(), (o, n) -> n)));
super.init(model, context); super.init(model, context);
} }
......
package com.mortals.xhx.module.favorites.web; package com.mortals.xhx.module.favorites.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.base.system.user.model.UserQuery;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.module.news.model.NewsQuery;
import com.mortals.xhx.module.product.model.ProductQuery;
import com.mortals.xhx.module.product.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -36,12 +41,20 @@ public class FavoritesProductController extends BaseCRUDJsonBodyMappingControlle ...@@ -36,12 +41,20 @@ public class FavoritesProductController extends BaseCRUDJsonBodyMappingControlle
@Autowired @Autowired
private ParamService paramService; private ParamService paramService;
@Autowired
private UserService userService;
@Autowired
private ProductService productService;
public FavoritesProductController(){ public FavoritesProductController(){
super.setModuleDesc( "收藏产品"); super.setModuleDesc( "收藏产品");
} }
@Override @Override
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "userId", userService.find(new UserQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getRealName(), (o, n) -> n)));
this.addDict(model, "productId", productService.find(new ProductQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getProductName(), (o, n) -> n)));
this.addDict(model, "createUserId", userService.find(new UserQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getRealName(), (o, n) -> n)));
super.init(model, context); super.init(model, context);
} }
......
package com.mortals.xhx.module.staff.service; package com.mortals.xhx.module.staff.service;
import com.mortals.framework.service.ICRUDCacheService;
import com.mortals.framework.service.ICRUDService; import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.staff.model.StaffEntity; import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.dao.StaffDao; import com.mortals.xhx.module.staff.dao.StaffDao;
...@@ -10,7 +11,7 @@ import com.mortals.xhx.module.staff.dao.StaffDao; ...@@ -10,7 +11,7 @@ import com.mortals.xhx.module.staff.dao.StaffDao;
* @author zxfei * @author zxfei
* @date 2023-09-18 * @date 2023-09-18
*/ */
public interface StaffService extends ICRUDService<StaffEntity,Long>{ public interface StaffService extends ICRUDCacheService<StaffEntity,Long> {
StaffDao getDao(); StaffDao getDao();
} }
\ No newline at end of file
package com.mortals.xhx.module.staff.service.impl; package com.mortals.xhx.module.staff.service.impl;
import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
...@@ -16,6 +17,6 @@ import lombok.extern.slf4j.Slf4j; ...@@ -16,6 +17,6 @@ import lombok.extern.slf4j.Slf4j;
*/ */
@Service("staffService") @Service("staffService")
@Slf4j @Slf4j
public class StaffServiceImpl extends AbstractCRUDServiceImpl<StaffDao, StaffEntity, Long> implements StaffService { public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, StaffEntity, Long> implements StaffService {
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment