From: Xia Kaixiang Date: Mon, 13 May 2019 08:04:20 +0000 (+0800) Subject: 全局参数管理 X-Git-Tag: 1.0.0^2~226 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=ab657cab116f6b119a2464f4947fbb9006e76c55;p=epayment%2Ffood_payapi.git 全局参数管理 --- diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/BusinessparaDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/BusinessparaDao.java index 5bf13d90..8f8be9c6 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/dao/BusinessparaDao.java +++ b/src/main/java/com/supwisdom/dlpay/framework/dao/BusinessparaDao.java @@ -1,6 +1,8 @@ package com.supwisdom.dlpay.framework.dao; import com.supwisdom.dlpay.framework.domain.TBusinesspara; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Lock; import org.springframework.data.jpa.repository.Query; @@ -22,4 +24,6 @@ public interface BusinessparaDao extends JpaRepository { @QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value ="0")}) @Query(value = " from TBusinesspara where parakey=?1 ") TBusinesspara findByParakeyForUpdateNowait(String parakey); + + Page findAllByParakeyContaining(String parakey, Pageable pageable); } diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/SysparaDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/SysparaDao.java index 7e20856d..b4f5da32 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/dao/SysparaDao.java +++ b/src/main/java/com/supwisdom/dlpay/framework/dao/SysparaDao.java @@ -1,17 +1,14 @@ package com.supwisdom.dlpay.framework.dao; import com.supwisdom.dlpay.framework.domain.TSyspara; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Lock; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.jpa.repository.QueryHints; +import org.springframework.data.jpa.repository.*; import org.springframework.stereotype.Repository; import javax.persistence.LockModeType; import javax.persistence.QueryHint; @Repository -public interface SysparaDao extends JpaRepository { +public interface SysparaDao extends JpaRepository, JpaSpecificationExecutor { TSyspara findByParaid(int paraid); @Lock(LockModeType.PESSIMISTIC_WRITE) @@ -22,4 +19,6 @@ public interface SysparaDao extends JpaRepository { @QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value ="0")}) @Query(value = "from TSyspara where paraid=?1 ") TSyspara findByParaidWithLockNowait(int paraid); + + } diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java b/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java new file mode 100644 index 00000000..1224c6e1 --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java @@ -0,0 +1,106 @@ +package com.supwisdom.dlpay.system.controller; + +import com.supwisdom.dlpay.api.bean.JsonResult; +import com.supwisdom.dlpay.framework.domain.TBusinesspara; +import com.supwisdom.dlpay.framework.domain.TSyspara; +import com.supwisdom.dlpay.framework.service.SystemUtilService; +import com.supwisdom.dlpay.framework.util.PageResult; +import com.supwisdom.dlpay.framework.util.WebConstant; +import com.supwisdom.dlpay.system.service.ParamService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class ParamController { + @Autowired + private ParamService paramService; + @Autowired + private SystemUtilService systemUtilService; + + @GetMapping("/param/syspara") + public String sysparaView() { + return "system/param/syspara"; + } + + @GetMapping("/param/sysparalist") + @PreAuthorize("hasPermission('/param/syspara','')") + @ResponseBody + public PageResult getDataList(@RequestParam("page") Integer pageNo, + @RequestParam("limit") Integer pageSize, + @RequestParam(value = "paraid", required = false) Integer paraid, + @RequestParam(value = "paraname", required = false) String paraname) { + try { + if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT; + if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT; + return paramService.getSysparaPage(paraid, paraname, pageNo, pageSize); + } catch (Exception e) { + e.printStackTrace(); + return new PageResult<>(99, "系统查询错误"); + } + } + + @PostMapping("/param/sysparaupdate") + @PreAuthorize("hasPermission('/param/sysparaupdate','')") + @ResponseBody + public JsonResult updateSyspara(@RequestParam("paraid") Integer paraid, + @RequestParam("paraval") String paraval) { + if (null == paraid || null == paraval) { + return JsonResult.error("参数传递错误"); + } else if (paraval.length() > 30) { + return JsonResult.error("参数值过长"); + } + TSyspara syspara = paramService.getSysparaByParaid(paraid); + if (null == syspara) { + return JsonResult.error("全局参数不存在"); + } + syspara.setParaval(paraval); + syspara.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime()); + if (syspara.checkValueInvalid()) { + return JsonResult.error("参数值格式错误"); + } + try { + if (paramService.updateSyspara(syspara)) { + return JsonResult.ok("修改成功"); + } else { + return JsonResult.error("修改失败"); + } + } catch (Exception e) { + e.printStackTrace(); + return JsonResult.error("系统处理异常"); + } + } + + + /** + * ==================================================== + * 业务参数配置 + * ==================================================== + */ + @GetMapping("/param/businesspara") + public String busiparaView() { + return "system/param/businesspara"; + } + + @PostMapping("/param/businessparalist") + @PreAuthorize("hasPermission('/param/businesspara','')") + @ResponseBody + public PageResult getDataList(@RequestParam("page") Integer pageNo, + @RequestParam("limit") Integer pageSize, + @RequestParam(value = "paraname", required = false) String paraname) { + try { + if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT; + if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT; + return paramService.getBusinessparaPage(paraname, pageNo, pageSize); + } catch (Exception e) { + e.printStackTrace(); + return new PageResult<>(99, "系统查询错误"); + } + } + + +} diff --git a/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java b/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java new file mode 100644 index 00000000..a255c4cb --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java @@ -0,0 +1,22 @@ +package com.supwisdom.dlpay.system.service; + +import com.supwisdom.dlpay.framework.domain.TBusinesspara; +import com.supwisdom.dlpay.framework.domain.TSyspara; +import com.supwisdom.dlpay.framework.util.PageResult; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + + +public interface ParamService { + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true) + PageResult getSysparaPage(Integer paraid, String paraname, int pageNo, int pageSize); + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true) + TSyspara getSysparaByParaid(int paraid); + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + boolean updateSyspara(TSyspara syspara); + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true) + PageResult getBusinessparaPage(String paraname, int pageNo, int pageSize); +} diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java new file mode 100644 index 00000000..199682b1 --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java @@ -0,0 +1,77 @@ +package com.supwisdom.dlpay.system.service.impl; + +import com.supwisdom.dlpay.framework.dao.BusinessparaDao; +import com.supwisdom.dlpay.framework.dao.SysparaDao; +import com.supwisdom.dlpay.framework.domain.TBusinesspara; +import com.supwisdom.dlpay.framework.domain.TSyspara; +import com.supwisdom.dlpay.framework.util.PageResult; +import com.supwisdom.dlpay.framework.util.StringUtil; +import com.supwisdom.dlpay.system.service.ParamService; +import com.supwisdom.dlpay.util.ConstantUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; + +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; +import java.util.ArrayList; +import java.util.List; + + +@Service +public class ParamServiceImpl implements ParamService { + @Autowired + private SysparaDao sysparaDao; + @Autowired + private BusinessparaDao businessparaDao; + + @Override + public PageResult getSysparaPage(Integer paraid, String paraname, int pageNo, int pageSize) { + Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by("paraid")); + Page page = sysparaDao.findAll(new Specification() { + @Override + public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { + List predicates = new ArrayList<>(); + if (null != paraid) { + predicates.add(criteriaBuilder.equal(root.get("paraid").as(Integer.class), paraid)); + } + if (!StringUtil.isEmpty(paraname)) { + predicates.add(criteriaBuilder.like(root.get("paraname").as(String.class), "%" + paraname.trim() + "%")); + } + predicates.add(criteriaBuilder.equal(root.get("displayflag").as(String.class), ConstantUtil.ENABLE_YES)); + return criteriaBuilder.and(predicates.toArray(new Predicate[0])); + } + }, pageable); + return new PageResult<>(page); + } + + @Override + public TSyspara getSysparaByParaid(int paraid) { + return sysparaDao.findByParaid(paraid); + } + + @Override + public boolean updateSyspara(TSyspara syspara) { + if (null != syspara) { + sysparaDao.save(syspara); + return true; + } + return false; + } + + @Override + public PageResult getBusinessparaPage(String paraname, int pageNo, int pageSize) { + Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by("parakey")); + if (!StringUtil.isEmpty(paraname)) { + return new PageResult<>(businessparaDao.findAllByParakeyContaining(paraname.trim(), pageable)); + } + return new PageResult<>(businessparaDao.findAll(pageable)); + } + +} diff --git a/src/main/resources/templates/system/param/businesspara.html b/src/main/resources/templates/system/param/businesspara.html new file mode 100644 index 00000000..57b1e768 --- /dev/null +++ b/src/main/resources/templates/system/param/businesspara.html @@ -0,0 +1,94 @@ +
+
+

业务参数管理

+ + 参数管理 + 业务参数管理 + +
+
+
+ 搜索: +   + +
+
+
+
+ \ No newline at end of file diff --git a/src/main/resources/templates/system/param/syspara.html b/src/main/resources/templates/system/param/syspara.html new file mode 100644 index 00000000..ae17c1d1 --- /dev/null +++ b/src/main/resources/templates/system/param/syspara.html @@ -0,0 +1,96 @@ +
+
+

全局参数管理

+ + 参数管理 + 全局参数管理 + +
+
+
+ 搜索: +   +   + + +
+
+
+
+ \ No newline at end of file diff --git a/src/test/kotlin/com/supwisdom/dlpay/controller/ShopControllerTest.kt b/src/test/kotlin/com/supwisdom/dlpay/controller/ShopControllerTest.kt index b4347fa5..c8fd5ec1 100644 --- a/src/test/kotlin/com/supwisdom/dlpay/controller/ShopControllerTest.kt +++ b/src/test/kotlin/com/supwisdom/dlpay/controller/ShopControllerTest.kt @@ -29,7 +29,6 @@ class ShopControllerTest : MvcBaseTest() { @Test fun open() { val shopParam = OpenShopParam() - shopParam.syscode = "ykt"//random req shopParam.shopUniqueId = "ykt_shop_20001" shopParam.shopname = "测试名称" val gson = Gson() @@ -50,7 +49,6 @@ class ShopControllerTest : MvcBaseTest() { @Test fun get() { val shopParam = QueryShopParam() - shopParam.syscode = "ykt"//random req shopParam.shopUniqueId = "ykt_shop_20001" val gson = Gson() val ret = mvc.perform(post("/shop/open").content(gson.toJson(shopParam)) diff --git a/src/test/kotlin/com/supwisdom/dlpay/controller/UserControllerTest.kt b/src/test/kotlin/com/supwisdom/dlpay/controller/UserControllerTest.kt index 44724a30..c76eb14d 100644 --- a/src/test/kotlin/com/supwisdom/dlpay/controller/UserControllerTest.kt +++ b/src/test/kotlin/com/supwisdom/dlpay/controller/UserControllerTest.kt @@ -26,7 +26,6 @@ class UserControllerTest : MvcBaseTest() { @Test fun open() { val userParam = OpenUserParam() - userParam.syscode = "ykt" userParam.uid = ""//random req userParam.name = "测试名称" @@ -48,7 +47,6 @@ class UserControllerTest : MvcBaseTest() { fun get() { val userParam = QueryUserParam() - userParam.syscode = "ykt" userParam.uid = "testuseruniqueId"//测试用 val gson = Gson() val ret = mvc.perform(MockMvcRequestBuilders.post("/api/user/open").content(gson.toJson(userParam))