From ce86ea654b6cec94ab174d8cd1182de60e9faf64 Mon Sep 17 00:00:00 2001 From: lzx_mac <2602107437@qq.com> Date: Thu, 29 Aug 2024 11:58:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=88=E6=9D=83=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin-hanhai-vue/.env.development | 2 +- admin-hanhai-vue/.env.production | 2 +- .../target/jeecg-system-cloud-api-3.2.0.jar | Bin 9789 -> 9789 bytes .../java/org/jeecg/config/shiro/ShiroConfig.java | 3 + .../cheerConf/controller/CheerConfController.java | 171 +++++++++++++++++ .../jeecg/modules/cheerConf/entity/CheerConf.java | 62 +++++++ .../modules/cheerConf/mapper/CheerConfMapper.java | 17 ++ .../cheerConf/mapper/xml/CheerConfMapper.xml | 5 + .../cheerConf/service/ICheerConfService.java | 14 ++ .../service/impl/CheerConfServiceImpl.java | 19 ++ .../jeecg/modules/cheerConf/vue/CheerConfList.vue | 183 +++++++++++++++++++ .../cheerConf/vue/modules/CheerConfForm.vue | 114 ++++++++++++ .../vue/modules/CheerConfModal.Style#Drawer.vue | 84 +++++++++ .../cheerConf/vue/modules/CheerConfModal.vue | 60 ++++++ .../jeecg/modules/cheerConf/vue3/CheerConf.api.ts | 61 +++++++ .../jeecg/modules/cheerConf/vue3/CheerConf.data.ts | 43 +++++ .../jeecg/modules/cheerConf/vue3/CheerConfList.vue | 162 ++++++++++++++++ .../cheerConf/vue3/components/CheerConfModal.vue | 58 ++++++ .../controller/CheerRechargeController.java | 171 +++++++++++++++++ .../cheerRecharge/entity/CheerRecharge.java | 54 ++++++ .../cheerRecharge/mapper/CheerRechargeMapper.java | 17 ++ .../mapper/xml/CheerRechargeMapper.xml | 5 + .../service/ICheerRechargeService.java | 14 ++ .../service/impl/CheerRechargeServiceImpl.java | 19 ++ .../cheerRecharge/vue/CheerRechargeList.vue | 171 +++++++++++++++++ .../vue/modules/CheerRechargeForm.vue | 104 +++++++++++ .../modules/CheerRechargeModal.Style#Drawer.vue | 84 +++++++++ .../vue/modules/CheerRechargeModal.vue | 60 ++++++ .../cheerRecharge/vue3/CheerRecharge.api.ts | 61 +++++++ .../cheerRecharge/vue3/CheerRecharge.data.ts | 23 +++ .../cheerRecharge/vue3/CheerRechargeList.vue | 162 ++++++++++++++++ .../vue3/components/CheerRechargeModal.vue | 58 ++++++ .../controller/CheerWaterController.java | 171 +++++++++++++++++ .../modules/cheerWater/entity/CheerWater.java | 71 +++++++ .../cheerWater/mapper/CheerWaterMapper.java | 17 ++ .../cheerWater/mapper/xml/CheerWaterMapper.xml | 5 + .../cheerWater/service/ICheerWaterService.java | 14 ++ .../service/impl/CheerWaterServiceImpl.java | 19 ++ .../modules/cheerWater/vue/CheerWaterList.vue | 203 +++++++++++++++++++++ .../cheerWater/vue/modules/CheerWaterForm.vue | 124 +++++++++++++ .../vue/modules/CheerWaterModal.Style#Drawer.vue | 84 +++++++++ .../cheerWater/vue/modules/CheerWaterModal.vue | 60 ++++++ .../modules/cheerWater/vue3/CheerWater.api.ts | 61 +++++++ .../modules/cheerWater/vue3/CheerWater.data.ts | 72 ++++++++ .../modules/cheerWater/vue3/CheerWaterList.vue | 162 ++++++++++++++++ .../cheerWater/vue3/components/CheerWaterModal.vue | 58 ++++++ .../service/impl/AppletLoginServiceImpl.java | 9 +- .../org/jeecg/config/shiro/ShiroConfig.class | Bin 11319 -> 11355 bytes .../cheerConf/controller/CheerConfController.class | Bin 0 -> 7226 bytes .../jeecg/modules/cheerConf/entity/CheerConf.class | Bin 0 -> 5669 bytes .../modules/cheerConf/mapper/CheerConfMapper.class | Bin 0 -> 339 bytes .../cheerConf/mapper/xml/CheerConfMapper.xml | 5 + .../cheerConf/service/ICheerConfService.class | Bin 0 -> 352 bytes .../service/impl/CheerConfServiceImpl.class | Bin 0 -> 793 bytes .../controller/CheerRechargeController.class | Bin 0 -> 7411 bytes .../cheerRecharge/entity/CheerRecharge.class | Bin 0 -> 4815 bytes .../cheerRecharge/mapper/CheerRechargeMapper.class | Bin 0 -> 359 bytes .../mapper/xml/CheerRechargeMapper.xml | 5 + .../service/ICheerRechargeService.class | Bin 0 -> 372 bytes .../service/impl/CheerRechargeServiceImpl.class | Bin 0 -> 845 bytes .../controller/CheerWaterController.class | Bin 0 -> 7309 bytes .../modules/cheerWater/entity/CheerWater.class | Bin 0 -> 6902 bytes .../cheerWater/mapper/CheerWaterMapper.class | Bin 0 -> 344 bytes .../cheerWater/mapper/xml/CheerWaterMapper.xml | 5 + .../cheerWater/service/ICheerWaterService.class | Bin 0 -> 357 bytes .../service/impl/CheerWaterServiceImpl.class | Bin 0 -> 806 bytes .../service/impl/AppletLoginServiceImpl.class | Bin 6424 -> 6377 bytes .../target/jeecg-boot-base-core-3.2.0.jar | Bin 452433 -> 479912 bytes .../api/cheeroncontroller/CheerInfoController.java | 54 ++++++ .../cheeroncontroller/CheerLoginApiController.java | 50 +++++ .../noticeapicontroller/LoginApiController.java | 36 ++++ .../org/jeecg/modules/apiBean/OrderPayBean.java | 15 ++ .../jeecg/modules/apiBean/OrderWaterPageBean.java | 21 +++ .../jeecg/modules/apiservice/InfoApiService.java | 11 +- .../jeecg/modules/apiservice/LoginApiService.java | 21 ++- .../apiservice/impl/InfoApiServiceImpl.java | 85 ++++++++- .../apiservice/impl/LoginApiServiceImpl.java | 65 ++++++- 77 files changed, 3547 insertions(+), 19 deletions(-) create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/controller/CheerConfController.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/entity/CheerConf.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/mapper/CheerConfMapper.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/mapper/xml/CheerConfMapper.xml create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/service/ICheerConfService.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/service/impl/CheerConfServiceImpl.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/CheerConfList.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/modules/CheerConfForm.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/modules/CheerConfModal.Style#Drawer.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/modules/CheerConfModal.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/CheerConf.api.ts create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/CheerConf.data.ts create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/CheerConfList.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/components/CheerConfModal.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/controller/CheerRechargeController.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/entity/CheerRecharge.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/mapper/CheerRechargeMapper.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/mapper/xml/CheerRechargeMapper.xml create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/service/ICheerRechargeService.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/service/impl/CheerRechargeServiceImpl.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/CheerRechargeList.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/modules/CheerRechargeForm.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/modules/CheerRechargeModal.Style#Drawer.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/modules/CheerRechargeModal.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/CheerRecharge.api.ts create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/CheerRecharge.data.ts create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/CheerRechargeList.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/components/CheerRechargeModal.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/controller/CheerWaterController.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/entity/CheerWater.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/mapper/CheerWaterMapper.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/mapper/xml/CheerWaterMapper.xml create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/service/ICheerWaterService.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/service/impl/CheerWaterServiceImpl.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/CheerWaterList.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/modules/CheerWaterForm.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/modules/CheerWaterModal.Style#Drawer.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/modules/CheerWaterModal.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/CheerWater.api.ts create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/CheerWater.data.ts create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/CheerWaterList.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/components/CheerWaterModal.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/controller/CheerConfController.class create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/entity/CheerConf.class create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/mapper/CheerConfMapper.class create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/mapper/xml/CheerConfMapper.xml create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/service/ICheerConfService.class create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/service/impl/CheerConfServiceImpl.class create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerRecharge/controller/CheerRechargeController.class create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerRecharge/entity/CheerRecharge.class create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerRecharge/mapper/CheerRechargeMapper.class create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerRecharge/mapper/xml/CheerRechargeMapper.xml create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerRecharge/service/ICheerRechargeService.class create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerRecharge/service/impl/CheerRechargeServiceImpl.class create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/controller/CheerWaterController.class create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/entity/CheerWater.class create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/mapper/CheerWaterMapper.class create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/mapper/xml/CheerWaterMapper.xml create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/service/ICheerWaterService.class create mode 100644 jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/service/impl/CheerWaterServiceImpl.class create mode 100644 jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/cheeroncontroller/CheerInfoController.java create mode 100644 jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/cheeroncontroller/CheerLoginApiController.java create mode 100644 jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/OrderPayBean.java create mode 100644 jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/OrderWaterPageBean.java diff --git a/admin-hanhai-vue/.env.development b/admin-hanhai-vue/.env.development index bf4420c..a8ae589 100644 --- a/admin-hanhai-vue/.env.development +++ b/admin-hanhai-vue/.env.development @@ -1,5 +1,5 @@ NODE_ENV=development -VUE_APP_API_BASE_URL=http://admin.anqi.shop/a-notice-api/ +VUE_APP_API_BASE_URL=http://localhost:8000/a-notice-api/ VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview diff --git a/admin-hanhai-vue/.env.production b/admin-hanhai-vue/.env.production index 8a85667..4ae3ecb 100644 --- a/admin-hanhai-vue/.env.production +++ b/admin-hanhai-vue/.env.production @@ -1,4 +1,4 @@ NODE_ENV=production -VUE_APP_API_BASE_URL=http://admin.anqi.shop/a-notice-api/ +VUE_APP_API_BASE_URL=http://localhost:8000/a-notice-api/ VUE_APP_CAS_BASE_URL=http://localhost:8888/cas VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/target/jeecg-system-cloud-api-3.2.0.jar b/jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/target/jeecg-system-cloud-api-3.2.0.jar index 53f52688753fe5afc2a0e7c888712679fd954240..0fba5b738d142ba110fe1ef52cff6da3c0fa3057 100644 GIT binary patch delta 248 zcmdn%v)6|=z?+$ci-CcIfq~Utb|S9|GmzS76358QVlO*+Dx*1=KF{bN2;@gHAOV%h ziURVJ?U{r?IwprOX@TiRCMPg`j42YV!(V0|<1`)y23bP}23wGh&Hl^>c|eA478Y2; z4OY{#V{Wi669dCG76t}qu$uSMr&++p>{T!U(VM?0=s{ehs^kuKQNB_Dm_DTB4^}9m gYz3wRm4m?aGUZILypT!;n66cc0MVOosH8Fi0Ae6D&;S4c delta 225 zcmdn%v)5fn=;>=GrNNzNVW1JkrC@^^uqZXLH!)Oem8C51L3dm2kXA%O7CNjx_ z={_b?FnyWHM-Zqx(qCpC<1`)y23bP}23wGh&Hl^>c|Znl78Y2;4OY{#V{Wi669dCG z76t}qu$uSMr&%V?RTP+fN`a^GZ%&T2WaSOvfp^g6Yl5 WF(8eTg;X-YbgfDR*q|FKsf+;PpGxfj diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java index a950dfb..d565286 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java @@ -75,6 +75,9 @@ public class ShiroConfig { //开启小程序不需要token的接口过滤 (现在先全开放后面再来改) filterChainDefinitionMap.put("/api/**", "anon"); + //开启小程序不需要token的接口过滤 (现在先全开放后面再来改) + filterChainDefinitionMap.put("/cheer/login/**", "anon"); + filterChainDefinitionMap.put("/sys/oss/file/upload", "anon"); //图片上传验证放开 diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/controller/CheerConfController.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/controller/CheerConfController.java new file mode 100644 index 0000000..6311d8d --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/controller/CheerConfController.java @@ -0,0 +1,171 @@ +package org.jeecg.modules.cheerConf.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.cheerConf.entity.CheerConf; +import org.jeecg.modules.cheerConf.service.ICheerConfService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + + /** + * @Description: 配置表 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +@Api(tags="配置表") +@RestController +@RequestMapping("/cheerConf/cheerConf") +@Slf4j +public class CheerConfController extends JeecgController { + @Autowired + private ICheerConfService cheerConfService; + + /** + * 分页列表查询 + * + * @param cheerConf + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "配置表-分页列表查询") + @ApiOperation(value="配置表-分页列表查询", notes="配置表-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(CheerConf cheerConf, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(cheerConf, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = cheerConfService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param cheerConf + * @return + */ + @AutoLog(value = "配置表-添加") + @ApiOperation(value="配置表-添加", notes="配置表-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CheerConf cheerConf) { + cheerConfService.save(cheerConf); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param cheerConf + * @return + */ + @AutoLog(value = "配置表-编辑") + @ApiOperation(value="配置表-编辑", notes="配置表-编辑") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody CheerConf cheerConf) { + cheerConfService.updateById(cheerConf); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "配置表-通过id删除") + @ApiOperation(value="配置表-通过id删除", notes="配置表-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + cheerConfService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "配置表-批量删除") + @ApiOperation(value="配置表-批量删除", notes="配置表-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.cheerConfService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "配置表-通过id查询") + @ApiOperation(value="配置表-通过id查询", notes="配置表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + CheerConf cheerConf = cheerConfService.getById(id); + if(cheerConf==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(cheerConf); + } + + /** + * 导出excel + * + * @param request + * @param cheerConf + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, CheerConf cheerConf) { + return super.exportXls(request, cheerConf, CheerConf.class, "配置表"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, CheerConf.class); + } + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/entity/CheerConf.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/entity/CheerConf.java new file mode 100644 index 0000000..4266dea --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/entity/CheerConf.java @@ -0,0 +1,62 @@ +package org.jeecg.modules.cheerConf.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 配置表 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +@Data +@TableName("cheer_conf") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cheer_conf对象", description="配置表") +public class CheerConf implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**键*/ + @Excel(name = "键", width = 15) + @ApiModelProperty(value = "键") + private java.lang.String keyValue; + /**说明*/ + @Excel(name = "说明", width = 15) + @ApiModelProperty(value = "说明") + private java.lang.String keyTitle; + /**内容*/ + @Excel(name = "内容", width = 15) + @ApiModelProperty(value = "内容") + private java.lang.String keyCentent; +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/mapper/CheerConfMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/mapper/CheerConfMapper.java new file mode 100644 index 0000000..a40657f --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/mapper/CheerConfMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.cheerConf.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.cheerConf.entity.CheerConf; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 配置表 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +public interface CheerConfMapper extends BaseMapper { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/mapper/xml/CheerConfMapper.xml b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/mapper/xml/CheerConfMapper.xml new file mode 100644 index 0000000..6e16809 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/mapper/xml/CheerConfMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/service/ICheerConfService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/service/ICheerConfService.java new file mode 100644 index 0000000..a0ee87f --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/service/ICheerConfService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.cheerConf.service; + +import org.jeecg.modules.cheerConf.entity.CheerConf; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 配置表 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +public interface ICheerConfService extends IService { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/service/impl/CheerConfServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/service/impl/CheerConfServiceImpl.java new file mode 100644 index 0000000..5a9942b --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/service/impl/CheerConfServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.cheerConf.service.impl; + +import org.jeecg.modules.cheerConf.entity.CheerConf; +import org.jeecg.modules.cheerConf.mapper.CheerConfMapper; +import org.jeecg.modules.cheerConf.service.ICheerConfService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 配置表 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +@Service +public class CheerConfServiceImpl extends ServiceImpl implements ICheerConfService { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/CheerConfList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/CheerConfList.vue new file mode 100644 index 0000000..f2edd1b --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/CheerConfList.vue @@ -0,0 +1,183 @@ + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/modules/CheerConfForm.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/modules/CheerConfForm.vue new file mode 100644 index 0000000..2cd14a4 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/modules/CheerConfForm.vue @@ -0,0 +1,114 @@ + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/modules/CheerConfModal.Style#Drawer.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/modules/CheerConfModal.Style#Drawer.vue new file mode 100644 index 0000000..2adcf5f --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/modules/CheerConfModal.Style#Drawer.vue @@ -0,0 +1,84 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/modules/CheerConfModal.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/modules/CheerConfModal.vue new file mode 100644 index 0000000..c9b5de8 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue/modules/CheerConfModal.vue @@ -0,0 +1,60 @@ + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/CheerConf.api.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/CheerConf.api.ts new file mode 100644 index 0000000..0a3a913 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/CheerConf.api.ts @@ -0,0 +1,61 @@ +import {defHttp} from '/@/utils/http/axios'; +import {Modal} from 'ant-design-vue'; + +enum Api { + list = '/cheerConf/cheerConf/list', + save='/cheerConf/cheerConf/add', + edit='/cheerConf/cheerConf/edit', + deleteOne = '/cheerConf/cheerConf/delete', + deleteBatch = '/cheerConf/cheerConf/deleteBatch', + importExcel = '/cheerConf/cheerConf/importExcel', + exportXls = '/cheerConf/cheerConf/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + Modal.confirm({ + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/CheerConf.data.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/CheerConf.data.ts new file mode 100644 index 0000000..7cca604 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/CheerConf.data.ts @@ -0,0 +1,43 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '键', + align:"center", + dataIndex: 'keyValue' + }, + { + title: '说明', + align:"center", + dataIndex: 'keyTitle' + }, + { + title: '内容', + align:"center", + dataIndex: 'keyCentent' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '键', + field: 'keyValue', + component: 'Input', + }, + { + label: '说明', + field: 'keyTitle', + component: 'Input', + }, + { + label: '内容', + field: 'keyCentent', + component: 'Input', + }, +]; diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/CheerConfList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/CheerConfList.vue new file mode 100644 index 0000000..ab5f457 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/CheerConfList.vue @@ -0,0 +1,162 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/components/CheerConfModal.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/components/CheerConfModal.vue new file mode 100644 index 0000000..49c804e --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerConf/vue3/components/CheerConfModal.vue @@ -0,0 +1,58 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/controller/CheerRechargeController.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/controller/CheerRechargeController.java new file mode 100644 index 0000000..71e5874 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/controller/CheerRechargeController.java @@ -0,0 +1,171 @@ +package org.jeecg.modules.cheerRecharge.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.cheerRecharge.entity.CheerRecharge; +import org.jeecg.modules.cheerRecharge.service.ICheerRechargeService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + + /** + * @Description: 充值套餐 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +@Api(tags="充值套餐") +@RestController +@RequestMapping("/cheerRecharge/cheerRecharge") +@Slf4j +public class CheerRechargeController extends JeecgController { + @Autowired + private ICheerRechargeService cheerRechargeService; + + /** + * 分页列表查询 + * + * @param cheerRecharge + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "充值套餐-分页列表查询") + @ApiOperation(value="充值套餐-分页列表查询", notes="充值套餐-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(CheerRecharge cheerRecharge, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(cheerRecharge, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = cheerRechargeService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param cheerRecharge + * @return + */ + @AutoLog(value = "充值套餐-添加") + @ApiOperation(value="充值套餐-添加", notes="充值套餐-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CheerRecharge cheerRecharge) { + cheerRechargeService.save(cheerRecharge); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param cheerRecharge + * @return + */ + @AutoLog(value = "充值套餐-编辑") + @ApiOperation(value="充值套餐-编辑", notes="充值套餐-编辑") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody CheerRecharge cheerRecharge) { + cheerRechargeService.updateById(cheerRecharge); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "充值套餐-通过id删除") + @ApiOperation(value="充值套餐-通过id删除", notes="充值套餐-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + cheerRechargeService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "充值套餐-批量删除") + @ApiOperation(value="充值套餐-批量删除", notes="充值套餐-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.cheerRechargeService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "充值套餐-通过id查询") + @ApiOperation(value="充值套餐-通过id查询", notes="充值套餐-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + CheerRecharge cheerRecharge = cheerRechargeService.getById(id); + if(cheerRecharge==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(cheerRecharge); + } + + /** + * 导出excel + * + * @param request + * @param cheerRecharge + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, CheerRecharge cheerRecharge) { + return super.exportXls(request, cheerRecharge, CheerRecharge.class, "充值套餐"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, CheerRecharge.class); + } + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/entity/CheerRecharge.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/entity/CheerRecharge.java new file mode 100644 index 0000000..73c49d7 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/entity/CheerRecharge.java @@ -0,0 +1,54 @@ +package org.jeecg.modules.cheerRecharge.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 充值套餐 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +@Data +@TableName("cheer_recharge") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cheer_recharge对象", description="充值套餐") +public class CheerRecharge implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**金融*/ + @Excel(name = "金融", width = 15) + @ApiModelProperty(value = "金融") + private java.math.BigDecimal price; +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/mapper/CheerRechargeMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/mapper/CheerRechargeMapper.java new file mode 100644 index 0000000..d19bbd9 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/mapper/CheerRechargeMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.cheerRecharge.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.cheerRecharge.entity.CheerRecharge; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 充值套餐 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +public interface CheerRechargeMapper extends BaseMapper { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/mapper/xml/CheerRechargeMapper.xml b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/mapper/xml/CheerRechargeMapper.xml new file mode 100644 index 0000000..e025af8 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/mapper/xml/CheerRechargeMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/service/ICheerRechargeService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/service/ICheerRechargeService.java new file mode 100644 index 0000000..5dd8ff8 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/service/ICheerRechargeService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.cheerRecharge.service; + +import org.jeecg.modules.cheerRecharge.entity.CheerRecharge; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 充值套餐 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +public interface ICheerRechargeService extends IService { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/service/impl/CheerRechargeServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/service/impl/CheerRechargeServiceImpl.java new file mode 100644 index 0000000..8861b81 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/service/impl/CheerRechargeServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.cheerRecharge.service.impl; + +import org.jeecg.modules.cheerRecharge.entity.CheerRecharge; +import org.jeecg.modules.cheerRecharge.mapper.CheerRechargeMapper; +import org.jeecg.modules.cheerRecharge.service.ICheerRechargeService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 充值套餐 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +@Service +public class CheerRechargeServiceImpl extends ServiceImpl implements ICheerRechargeService { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/CheerRechargeList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/CheerRechargeList.vue new file mode 100644 index 0000000..fb52825 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/CheerRechargeList.vue @@ -0,0 +1,171 @@ + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/modules/CheerRechargeForm.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/modules/CheerRechargeForm.vue new file mode 100644 index 0000000..1a42f68 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/modules/CheerRechargeForm.vue @@ -0,0 +1,104 @@ + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/modules/CheerRechargeModal.Style#Drawer.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/modules/CheerRechargeModal.Style#Drawer.vue new file mode 100644 index 0000000..72f22c9 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/modules/CheerRechargeModal.Style#Drawer.vue @@ -0,0 +1,84 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/modules/CheerRechargeModal.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/modules/CheerRechargeModal.vue new file mode 100644 index 0000000..b41219d --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue/modules/CheerRechargeModal.vue @@ -0,0 +1,60 @@ + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/CheerRecharge.api.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/CheerRecharge.api.ts new file mode 100644 index 0000000..b013494 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/CheerRecharge.api.ts @@ -0,0 +1,61 @@ +import {defHttp} from '/@/utils/http/axios'; +import {Modal} from 'ant-design-vue'; + +enum Api { + list = '/cheerRecharge/cheerRecharge/list', + save='/cheerRecharge/cheerRecharge/add', + edit='/cheerRecharge/cheerRecharge/edit', + deleteOne = '/cheerRecharge/cheerRecharge/delete', + deleteBatch = '/cheerRecharge/cheerRecharge/deleteBatch', + importExcel = '/cheerRecharge/cheerRecharge/importExcel', + exportXls = '/cheerRecharge/cheerRecharge/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + Modal.confirm({ + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/CheerRecharge.data.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/CheerRecharge.data.ts new file mode 100644 index 0000000..e0f0077 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/CheerRecharge.data.ts @@ -0,0 +1,23 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '金融', + align:"center", + dataIndex: 'price' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '金融', + field: 'price', + component: 'InputNumber', + }, +]; diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/CheerRechargeList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/CheerRechargeList.vue new file mode 100644 index 0000000..17a6006 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/CheerRechargeList.vue @@ -0,0 +1,162 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/components/CheerRechargeModal.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/components/CheerRechargeModal.vue new file mode 100644 index 0000000..fa0861a --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerRecharge/vue3/components/CheerRechargeModal.vue @@ -0,0 +1,58 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/controller/CheerWaterController.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/controller/CheerWaterController.java new file mode 100644 index 0000000..4f80895 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/controller/CheerWaterController.java @@ -0,0 +1,171 @@ +package org.jeecg.modules.cheerWater.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.cheerWater.entity.CheerWater; +import org.jeecg.modules.cheerWater.service.ICheerWaterService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + + /** + * @Description: 加油流水表 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +@Api(tags="加油流水表") +@RestController +@RequestMapping("/cheerWater/cheerWater") +@Slf4j +public class CheerWaterController extends JeecgController { + @Autowired + private ICheerWaterService cheerWaterService; + + /** + * 分页列表查询 + * + * @param cheerWater + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "加油流水表-分页列表查询") + @ApiOperation(value="加油流水表-分页列表查询", notes="加油流水表-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(CheerWater cheerWater, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(cheerWater, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = cheerWaterService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param cheerWater + * @return + */ + @AutoLog(value = "加油流水表-添加") + @ApiOperation(value="加油流水表-添加", notes="加油流水表-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CheerWater cheerWater) { + cheerWaterService.save(cheerWater); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param cheerWater + * @return + */ + @AutoLog(value = "加油流水表-编辑") + @ApiOperation(value="加油流水表-编辑", notes="加油流水表-编辑") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody CheerWater cheerWater) { + cheerWaterService.updateById(cheerWater); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "加油流水表-通过id删除") + @ApiOperation(value="加油流水表-通过id删除", notes="加油流水表-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + cheerWaterService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "加油流水表-批量删除") + @ApiOperation(value="加油流水表-批量删除", notes="加油流水表-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.cheerWaterService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "加油流水表-通过id查询") + @ApiOperation(value="加油流水表-通过id查询", notes="加油流水表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + CheerWater cheerWater = cheerWaterService.getById(id); + if(cheerWater==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(cheerWater); + } + + /** + * 导出excel + * + * @param request + * @param cheerWater + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, CheerWater cheerWater) { + return super.exportXls(request, cheerWater, CheerWater.class, "加油流水表"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, CheerWater.class); + } + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/entity/CheerWater.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/entity/CheerWater.java new file mode 100644 index 0000000..bd5a801 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/entity/CheerWater.java @@ -0,0 +1,71 @@ +package org.jeecg.modules.cheerWater.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 加油流水表 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +@Data +@TableName("cheer_water") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cheer_water对象", description="加油流水表") +public class CheerWater implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**原价*/ + @Excel(name = "原价", width = 15) + @ApiModelProperty(value = "原价") + private java.math.BigDecimal oldPrice; + /**支付价*/ + @Excel(name = "支付价", width = 15) + @ApiModelProperty(value = "支付价") + private java.math.BigDecimal price; + /**订单名称*/ + @Excel(name = "订单名称", width = 15) + @ApiModelProperty(value = "订单名称") + private java.lang.String name; + /**用户标识*/ + @Excel(name = "用户标识", width = 15, dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id") + @Dict(dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id") + @ApiModelProperty(value = "用户标识") + private java.lang.String userId; + /**支付状态*/ + @Excel(name = "支付状态", width = 15) + @ApiModelProperty(value = "支付状态") + private java.lang.String state; +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/mapper/CheerWaterMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/mapper/CheerWaterMapper.java new file mode 100644 index 0000000..45b88d3 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/mapper/CheerWaterMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.cheerWater.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.cheerWater.entity.CheerWater; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 加油流水表 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +public interface CheerWaterMapper extends BaseMapper { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/mapper/xml/CheerWaterMapper.xml b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/mapper/xml/CheerWaterMapper.xml new file mode 100644 index 0000000..0656457 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/mapper/xml/CheerWaterMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/service/ICheerWaterService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/service/ICheerWaterService.java new file mode 100644 index 0000000..1932122 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/service/ICheerWaterService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.cheerWater.service; + +import org.jeecg.modules.cheerWater.entity.CheerWater; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 加油流水表 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +public interface ICheerWaterService extends IService { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/service/impl/CheerWaterServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/service/impl/CheerWaterServiceImpl.java new file mode 100644 index 0000000..50238e9 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/service/impl/CheerWaterServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.cheerWater.service.impl; + +import org.jeecg.modules.cheerWater.entity.CheerWater; +import org.jeecg.modules.cheerWater.mapper.CheerWaterMapper; +import org.jeecg.modules.cheerWater.service.ICheerWaterService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 加油流水表 + * @Author: jeecg-boot + * @Date: 2024-08-29 + * @Version: V1.0 + */ +@Service +public class CheerWaterServiceImpl extends ServiceImpl implements ICheerWaterService { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/CheerWaterList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/CheerWaterList.vue new file mode 100644 index 0000000..867cea1 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/CheerWaterList.vue @@ -0,0 +1,203 @@ + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/modules/CheerWaterForm.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/modules/CheerWaterForm.vue new file mode 100644 index 0000000..23a4dc7 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/modules/CheerWaterForm.vue @@ -0,0 +1,124 @@ + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/modules/CheerWaterModal.Style#Drawer.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/modules/CheerWaterModal.Style#Drawer.vue new file mode 100644 index 0000000..7c8d9f1 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/modules/CheerWaterModal.Style#Drawer.vue @@ -0,0 +1,84 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/modules/CheerWaterModal.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/modules/CheerWaterModal.vue new file mode 100644 index 0000000..91db811 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue/modules/CheerWaterModal.vue @@ -0,0 +1,60 @@ + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/CheerWater.api.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/CheerWater.api.ts new file mode 100644 index 0000000..c11f370 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/CheerWater.api.ts @@ -0,0 +1,61 @@ +import {defHttp} from '/@/utils/http/axios'; +import {Modal} from 'ant-design-vue'; + +enum Api { + list = '/cheerWater/cheerWater/list', + save='/cheerWater/cheerWater/add', + edit='/cheerWater/cheerWater/edit', + deleteOne = '/cheerWater/cheerWater/delete', + deleteBatch = '/cheerWater/cheerWater/deleteBatch', + importExcel = '/cheerWater/cheerWater/importExcel', + exportXls = '/cheerWater/cheerWater/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + Modal.confirm({ + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/CheerWater.data.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/CheerWater.data.ts new file mode 100644 index 0000000..10a7a80 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/CheerWater.data.ts @@ -0,0 +1,72 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '创建日期', + align:"center", + sorter: true, + dataIndex: 'createTime' + }, + { + title: '原价', + align:"center", + dataIndex: 'oldPrice' + }, + { + title: '支付价', + align:"center", + dataIndex: 'price' + }, + { + title: '订单名称', + align:"center", + dataIndex: 'name' + }, + { + title: '用户标识', + align:"center", + dataIndex: 'userId_dictText' + }, + { + title: '支付状态', + align:"center", + dataIndex: 'state' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '原价', + field: 'oldPrice', + component: 'InputNumber', + }, + { + label: '支付价', + field: 'price', + component: 'InputNumber', + }, + { + label: '订单名称', + field: 'name', + component: 'Input', + }, + { + label: '用户标识', + field: 'userId', + component: 'JSearchSelect', + componentProps:{ + dict:"han_hai_member,nick_name,id" + }, + }, + { + label: '支付状态', + field: 'state', + component: 'Input', + }, +]; diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/CheerWaterList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/CheerWaterList.vue new file mode 100644 index 0000000..7b54d9e --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/CheerWaterList.vue @@ -0,0 +1,162 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/components/CheerWaterModal.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/components/CheerWaterModal.vue new file mode 100644 index 0000000..faa1ac3 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cheerWater/vue3/components/CheerWaterModal.vue @@ -0,0 +1,58 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/service/impl/AppletLoginServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/service/impl/AppletLoginServiceImpl.java index d32b299..c81f5e6 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/service/impl/AppletLoginServiceImpl.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/service/impl/AppletLoginServiceImpl.java @@ -65,7 +65,7 @@ public class AppletLoginServiceImpl implements AppletLoginService { throw new JeecgBootException("未获取到openid"); } - HanHaiMember member = memberService.lambdaQuery().eq(HanHaiMember::getAppOpenid,wxOpenid).one(); + HanHaiMember member = memberService.lambdaQuery().eq(HanHaiMember::getAppletOpenid,wxOpenid).one(); if (member == null) { //如果user等于null说明该用户第一次登录,数据库没有该用户信息。 loginReq.setOpenid(wxOpenid); @@ -77,19 +77,20 @@ public class AppletLoginServiceImpl implements AppletLoginService { member.setHeadImage(loginReq.getHeadimgurl()); // 生成token返回给小程序端 String token = JwtUtil.sign(member.getAppletOpenid(), wxOpenid); + memberService.save(member); redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); // 设置超时时间 redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME / 100); map.put("userInfo", member); map.put("token", token); - result.setCode(905); + result.setCode(200); result.setResult(map); return result; } else { - member.setHeadImage(loginReq.getHeadimgurl()); +// member.setHeadImage(loginReq.getHeadimgurl()); // member.setSessionKey(sessionKey); - memberService.saveOrUpdate(member); +// memberService.saveOrUpdate(member); // 生成token返回给小程序端 String token = JwtUtil.sign(member.getAppletOpenid(), wxOpenid); redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/config/shiro/ShiroConfig.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/config/shiro/ShiroConfig.class index ef5622bf95f6c2362f4c802f73ff60f0b711533a..8f7712f25f48706c43ebca57d0fd5b1d8cf9d533 100644 GIT binary patch delta 3341 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 PhM?dy_&A-na>joF?1lX@ delta 3305 zcmZ`*2Y6If7XJS?b5}Xi5q*y={8;Byx>RLgufCWLp|IW-J^6loEckg+p-~XI@UiK8#6L;Pnt|HaNBcCmShgKoT3etB7lmxtKZkloBuXqN6adpPK0BKKiW zo4p+LS311HL6Kn=v9~zvW5j(O1?Xp}{x%0V7-kfPF(buQE2H9G3HHhod<4&OvS!N6vsM@mUEmTuQkl;3^m>?*PGV~4sYN@^E%1qWCt@$UQ-<0io;=m(~Z-c zZQf#YhJ)EAr8_uNYMf-2Tg~e%o3}Z~aa0+Fa&xIad%YkW-frv4-$RDk>`!#^u9&gs|I3sz%j@G8gzl zHGI^?QY`ao8Wsf~bNM)*@B-n#i@(z4lU(I>3OCDoimP4Lnq>`F5goiKc87q=ry28> zgd@%BjP6?2yIjY(i@o@_%V)Tr=<4NVH1^JDbZ+jmMr8w666wP#Du+czj2|_wa;(dZ zTy6XvNNegn(5TXPKNfjejW0;shd!a?G1izbDzuo3M1hcF26L@`Ll|7nm4*hM(}{kulRLsw8@HK z%WwECk=?qmJTgAgesrXwtbNat^3vhgp8wbW<^mif&TZ{A&&c-Xx-Dy`{pl#v54rq~ zhh2PwZ@rn#&*Bkpee-?(qXxP&@=o(M<#mWwYiIy|G=tz31qd<_i$w*sFVSw99yp1& zTs%PibqdeXyP8q!Ba*k*PVIpLGXEIg{!I0f3`F|96IBsB0ip3p0?5>LWstOI9h zZaK0!QtP!?Zk5E*x!7NaE*%4H*5H!xW%an+LdRfEAlx;MZpAslEwKGH@cZgeSdUB} z1{CB3V(8vB+#}pI#R&I|p;v)fuPA66L+^rBis?5=F&CG5%UkA0dtn@|z*O|cERC}H z=qoJxNuxiW#sF;8Bzqaf*oA>=x zWn-$9hp3g0Y1Y}e*}53FScRBj4Ztj`1b13vFxQ%ZdDe8yx8`7hRgHz#axAh|;z28p z#nvt?vEIWn>oYuL9YBqB2oGC_1+}TeV5FfC>4>hvQzAPcAFENT3JCvHZ49+WC=em* zAY!OfIkT-#uom^ISPN@6*2&hdaD|AA7f{fP@C??g;O6_(kik!2Z2dT&n{1DcpqRR``=1Le>WTjw{Ch(UVgX zDXGUOUXp5nIw=x2AXDevrsw5B;5ePyNM1>HsDQH!LO3suKE-wD+r1z^hJJDM*UNw& zaTIAU?�)`(hZ_Hpd^sAk%h(3);jmB!;1h_DkN0(*-)z{Lzs5KSOb{g>SB~Z7C$% z2-)^R@*H7ligji(>VNBk^ROMSn!4a`%I-CTv+Q2S8_F{mf54mAp)OAyZ2SK_*czGd z#9QjF#LXQlAC?rG#W75WxUw)`$w$mmk{=!(!-#xybCRhyNo2D{(YGq|?FcKErpm%( zYHBVosZ2wX?bO{#&X%xb+a!Hk?@4suL0S~=V7CMs0LV)i1EDxdmBdIBk|#}&ohL?= zaYMX|J*mRzgLpBwZynbLQ5oQ69d!9-}Q?hA~Q_qA*`&uZ*E8KYUFLWAnq~Vz~As z9GmH$DE=oJdY=lY&ji~(Vekb`*O>VY%+{&=!UA_MK2TVi@1KGyJP)alOiS)J;jc@C z*SH)X!}TvBJ4MAXp&mC-{}HN3Cn~i`-3yYU$+0M=r0A(JL{sFAF-$8^58ss3n!Xk{ zFGOZaI6a123JPm5F^(DXHM4shw`!l&dy@BvFdqYKnH~B;Y?1@D=Kuk5xEgGo+`|`Bj);in;-n()(O`)AaA_KI~8Q-u_e> z4L@mXW~3XHlcd@gQrjd}D+Evf1zpsGU;YIDF^mv(z{Xb%j!V@_%)YOswpdT9AF~|u zxlc9(dZ--|cd$(yUa{uWd_8x^a8Df;)Z<QkA=V?Fj T2jp<77_Jym_;@3y@upt^Bmwuj diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/controller/CheerConfController.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/controller/CheerConfController.class new file mode 100644 index 0000000000000000000000000000000000000000..44b93d4bbf97f52e6cdfa54d95ace6577158a0fc GIT binary patch literal 7226 zcmd5>`+pQy75`3N`^W}JD34S?s3IW*1~jylP&A}GLIVT>p@7y-c5gNVyF1IwY(ntS zhouB8g=!zRQi0kkRxQ-FkN~B=tM%g0w>4!l)#qxf{mkR;> zIE**(6PEJR0Dh*RG-1RQ)U+99T(uJ2jR({=BOVuKlY$x19wE#YBh}p@%w9bz6x=82 z4hRvAt4Sl4NeD~zs8q`#Q(IfcOeAKtJ2NR;Pl`_6(z_C(Ih8VO&DM>SrQm)?dfL=e z@orN~iax_UsCEf0WvSg-)Hck1Rr4mO%^BP1(@ha0wiRpjly0vhJ?fTrDky6)Vgz$~ zo1PNeGRZDs?$St_R4}R~IyF=0cXzPN?$Js7+6k448Y$Z}5(#0do?2uRcZ?uZ9m)u^ zzg>%qHr=unyjnLQKS5@&`*XaS+74*Fnwrp3akVvN3$}fsp~KR|31O=}ww+ct(}i6_ z13Lwwus!U5=mAZw}OZ?;~rB>r-iBDfi{A#c4KZJ?lEHR8m9_dn6!jL9eSKRmodrZ|M`Dje-p&xoiGl&dvTj?s8*lGS=^U4EwwqV zZ>O~-1Dxo}d$mM{>^1M!(UTv)|JKd(7nTnXJbml@d&2`S(aXr$H*Q{hjmRib3o>z| zOcmCcB;6;v)Gj?0^9fQn341H8VoK&LMNP=8c+cqk?>TQ&A-H$aGTeM8*^rd76omri zkeKM!D9d#^nklOkl&o4wxk!t}6tqty21H`$bTa9tG&*>o4BC z@m!&rpD&zTj{cBxxK_~Wr#z7DN+uJUSzdA?;VW(5y^Bz`Z||U6MNCj7r7&u&8}Eim z1Vf2VSZc;kRj~Os7#0YHxjEn7di<4}9~{$T!vp7Tz5M!A%;s7-fRlIS3=ihi)A^l?4!S*|^jpS(w-Nw~|?^I&3X^kR;01 zi`r8Kw03fxj~nd8tb7~QB9FncsV(fZ4i3VQIGi?2`{4v>c+`PbylwHV%Sp6Pj&}Lt zlsji`>$Xz+nrKeNI(5-U;Td3WP+O-Utoq

Pd#W;c!$W6dal~ST^@WI$3FI$HioN zND32&SV3{=E?Wh5aayUa)BoN9q-*Ordq&hz_6n|zCfrTKIiLUBylVAZw&2Fol09a& z_20rOgVjo%Dj zn>&1)IR%e8dBfQwZ|^!ljgPxU_QWhLvgw#`PemZBbEU}Lgwy6vPh~qvI$da`Ubb$_ z7CvQIowMu|ma~G>bwyB)*+Ukg_UV+}_ZBn57y$|v8< zqJ__kqI^0bAqQxkI9k>hQp^X^l}Ks{)8rNLj5BGXdgv>gc~*%$TWU#YmgO!RIgmAw zEKXBsN}ik&oQY7oje$>h2jnC|YYxY)|GaXeb52Mlj*RUbVNxRV2ZW!ue`XV<%lULT z3Y6e(PMz|JiVcVXJy+2EGjtErohlq%m(rU`cZKfd^;e+0O%Elgrz;Z!tFVl&5r+T` zSWa(r*hZ7e<>Y@7U696BFRLvZLWzPwl&&eihO)g4mr;InIbW`zVogQ;y9m@))Rqq+ zSc)})+Q1+}muO<9!8;x1u3!>_l>~`_t;T2ZIfBYhjr7D_ z{%ZQWmpE0CZujASg18W~sK~A%kShI}uoeM4K$HuK-l1COQGLOq`XW&^6IFE?i317Z zvuXh55g!RjNJ~x#vH=ES%iBT z;a=<`T^$SW$Cvh_MBvMKgfCwi3;0oJ1xz}f0nf+-_z(d$3jppylx*Rew2MsQm^3!l zq#_GgFkpdh&!lmQu$oQk21FNn_Ccrj10L2Lq&mC5R=U5Y`Z8(;F>?raG3Hr$Fh7Qw zc-)7%)(eAL9Q0#8SQv96i#frV6F$tzahMNgF{eDt8A8mA!h6$?%#aCLaFzaBMye(`7)Hz@YCzDF4RX0Mg@qacJzS zG+7Ub`&kse&SJ@%=+2TuQt}nd8!PvMPj1MQ8}j6aa0Fi^ zZ}{XMA%0G%eodNZu9Tl$L|^Acq&Vv*h;Mi`VG&XBzfjHmK`eL&pX9or`0Bz+0_w1R djKYsI(-V^Y0vdmkD8DJQ;8QqC-*W0c{Xdq@WUBxG literal 0 HcmV?d00001 diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/entity/CheerConf.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/entity/CheerConf.class new file mode 100644 index 0000000000000000000000000000000000000000..c90c3c791b6c03b6681d4db7457cf79f41514e98 GIT binary patch literal 5669 zcmb_g`;!z`6+S&XkDk}=>?F&kSx_L0?voJ}BMn4gVaX=D1la{me303hW~Z0gnaNBK zWaA@hB*vJBQ4A4cB5FcZ=%PZYno%{g#l1$gW|m8PMz$%W+^tY@s9dU9*^;$4TdW%) zY=-|S3I)u(Lg~@z?7?iNm@Q3Z#;vMZn%ba{w!2=k%o$^^Su-b##+Fj4Y-KGtttm7( znk&y_CbQ)kGheP}W@aa$sa1;gS|;oAG80+YjpX4gXw6m(g$5R7HjJWcmkV5;6x1SmRZbf0~vl2f_v@g%hz6b30~@zyyNBC z@$=W7J1e{hvG9@*3fJU-F>6O$q0DHxI+d9=jNH`zYIeprRIVP#RLW+?cqnHS8@80$ z&H@fv2{eUT>@9>2nR%-a-n>Sh9I0?UVOmAr=k+t^uRZ@XHU!y_QL^v@>D9*$Up;*Z zV539izt6V3R%W z39yNn2@}@d;|5#KWPF$log0}@O{{He&%&kkzSoVW#tf@a&hN_dp;{7im3Ndp-p;~28@JJKm!Fslc<##lO<=)9@BWG>s zy&rv~Jik*&70$YB6^yDv5zduvZYZiPv0>5{dIi`jRGy%%fgm=JYNQB}@FFUW%UF8x z1j37$&-2nK5?)XwvL>Y$Pv8<{xIBUsh}Xctji6j?qbNCUWpf9{vK70A(5um$xd~-U z+d0I5g>0=L$`Ca-V8!y+ZIb+!59@6R-?;5@fxL+;0#qUJsqvT_DL)e!?M^I?xyY*`rq&$PG zXD(eocLJr8H)^@6S>byI&HC-bPyO@Pr>~!QH9;eEcY^w9AVKSRxPv~PAf3@hMt3sW z&chBGP^h!{KHFM1i+Rq`q`S`^GruW8uhXRj?V?ZO)dMS>NJGAxMM+1*VTEvSj(Uamp7mnLkUa}*GLO1{TA5r{r5O}&GG@IDqQy$LcH47eA^B3f^PzD!dI z+Rwuy^c4iz3xz0H^kiFv`*hs?RxlstevibQ zF^)7Fuk$rV>G~L}&Bp6}jZxx0#?fZuO}@tW(`S%Ve9oN00X!pp{TC?E*K97*gbN82 znI?=xk$o1@kb+4HOZl9?&z42|6h$e0uCsl9p7!~zGq`AHx4%;WLEt%ZMaQ@uHDpx3W-$jb26LXa8o1<1d(rp5#7`F?Yo}*jRw+h_B@+AUy zvivrIHI^?GxQp>JftNFWABH)4zkeZ!epzw*C2mQPpMfXwyag?ExWDfe3I$K~|CUx9 zqfpDK{x@jF*Z@|%(w_3tcMf3CgM+`PxE6eq+D}qqPz%n{Dut6GFfsw71;wSm;3M?vb)V_K9+F-eMQu?AA79tWvYPiS!_B_s)` zfu!k4kTktjOERfdl9C!u!d-Zm-Ud>ap3>Twl#--24M*gXmh0^xE!WdpJCo9q)UM&| z1Sxn5C*DHdZMEF)VsD5DJ8eiArUIGBjt*rlP2&a&P`9#*4nWpIeabQ_0tIn%-k=$v z5PbZLNN$QHI|EAUmeeoSy z5}_~QM^)aT+XRgMA0WwMDxjEx{5>aC zJ!Gqp>$Z`qg&b9f9=26sSA_}?R-JmpRw4PNRm4$gx@xObSA~)gR$Y43R-qcCRn$=} z*JHLS=BiL5uv+Gyj1{qO8K@Te3w@QohNy(-&-5rz0O|8b`Z|KwLbuZ;It&!VN8yX~ z7*GhG=#SDjfWkHE1W=TIN1gO7pcp5Q@*1UXKoCUoC<+n= ze}TJ!7kKjk3pyy|5FAc$zDUx-4K$D0ES2QQe6q*)QAiVYfr)43uakyRKSR&OV literal 0 HcmV?d00001 diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/mapper/CheerConfMapper.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/mapper/CheerConfMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..f46bc76c45a4fc6fc5fbd7b691da3ce0559356e4 GIT binary patch literal 339 zcmb7AIc~!+5FGkaEH^Il4lfX-li|VwQps@P7f|#@p&*I^MH=weQuqORRA5>;3Ks!V z?CxNX!OVVqzFz=5W0Bw?!8}1KFhA(3l|DEY=!;sOBsH?FXkXT>d{!uHsFc>|qYY%v zrS!V*n$VN7j>*WbV@F%r^KO9a!n%rTW>t}~$Ix)xd}DUGZC{C7ul + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/service/ICheerConfService.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/service/ICheerConfService.class new file mode 100644 index 0000000000000000000000000000000000000000..4bd9811e3f3f115b118adad63d348f3324f5e7a3 GIT binary patch literal 352 zcmbVIyKcfj5S$AH^Jr4#GqMFx8POm`Lb8;?UvNGabC!LF?g8P~DEI(AD#DP2f+9tV z-5t$pM>Bi=I-USbFiOx*Fi0>I805M%GDOD$`>c{XNwqX3eH0a|kY>s@R7l(Cm5tOK z3K_KD*3lDx1~y(>L!RAEE2d@s4Q82jB~{F-q{gmd&7RbT*)6PD6PuvJffm0+I!^_L zxs6WoyRKUsugm-LNAd0IOJMq!?%l=XvB1k?EP?Sqa`glRp4#fPUqp+#xBiUYZ6+7= C&Tt|C literal 0 HcmV?d00001 diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/service/impl/CheerConfServiceImpl.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerConf/service/impl/CheerConfServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..7fd77ade272b673cccfa1a7833f3be762a2e7e4e GIT binary patch literal 793 zcmbtSO-~y!5Pi;P36$_rD)q>X_E2Bow3MofgcK?CK&srG&5$@<+bi1(&ClY5#GyZ+ zzo5US>g+;9OQon%WNGa8JmZ;po*%#NzXLeN>kjJJYh%BSS8W^!v`)3v@l2q8^mZiB z=(!0AbO+kf=faH1e^KL%nZ1EaRW?#ym-vxv#F-8P9|z7)<(w#;O5-L)MnR@CBHwfN zN(S=RIwh%1p2^;l9zL*rCKG{;p`Kb53(uK;4pL|2SUIC7u8?LiR#AsMD}tnNk!;Y; z{{845Z=J3z#i%?d|5U_9g_D&rWTTFYr+Ln9qD%l*k(7g+^oS?!~$+>m>1r&nGXx^e!i43Rv!xX4L9%8_iLiI%{J zwLV86S>rndPW~tRKU(1sH6B!+N1j^2i#uW4W+W>NG~eAp+%i$a3%2Dou!{}0Th+OV X4mKIp8JAu!v0d$5?C@Ut?*hL8mBREA literal 0 HcmV?d00001 diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerRecharge/controller/CheerRechargeController.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerRecharge/controller/CheerRechargeController.class new file mode 100644 index 0000000000000000000000000000000000000000..e4dc64f672ba18b2aae8058fa4440f8a9761b3a7 GIT binary patch literal 7411 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 literal 0 HcmV?d00001 diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerRecharge/mapper/CheerRechargeMapper.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerRecharge/mapper/CheerRechargeMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..eb2632770b56a518220d160157ddcd7c628fca32 GIT binary patch literal 359 zcmb7AK~4iP44lx?rRCBiufP{hY{h{}oEBB0FYu;Tn$>2r$|gt^KjXjycoZTm8~`Cz z9BhwlYdquEx91lCS2!RnUIN|nAon9&RX!MMM6@C2cd3=Uxfcl!qW2t(kaW?;1FgR|%bQYR zvGplvxwCDSa`9vS$$j~uPT~64g)dQmFeog4J5 + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerRecharge/service/ICheerRechargeService.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerRecharge/service/ICheerRechargeService.class new file mode 100644 index 0000000000000000000000000000000000000000..dafbcedc585be065a352105e3b62ac45ce8a42ce GIT binary patch literal 372 zcmbVIOG*Pl5PfYvlf;c{4`D5IHzu2a5Eu|LC+O)EogQYor9Z)}yjK=EfQOQdQN)N4 z$fBwqMe#oM{;}Hwc))drQHF7biNLrt+RB(b3%nJz+(>Gq)%0A|tYTg$*HR^2YgR5% zyRBq2;iXA|_%*T(##svNH%2in$}jL(IIpQ@R+?J3N(~26Yi7S>wU%Bpv5h8fY5see z&vJoD>5^CcWSY*-?c(I%oBi(7qrmi>#*eH2NCa;FMiscfAnQ;-;Hs-$_gQqPf9wMc Hk25;}kR^CM literal 0 HcmV?d00001 diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerRecharge/service/impl/CheerRechargeServiceImpl.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerRecharge/service/impl/CheerRechargeServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..1187722457f8d5e49e1c34dcafd52b4ce04ea42e GIT binary patch literal 845 zcmb_a%}yIJ5dKUEfk4YoDG~<`+<-%U;kJN;5Ur3x4+Q1zY=({L+FsdSAdkffi9;Wt zPs0y1Kg$^#5`l%T&a8^1=O3RssWY;#oY4bUN;B%Ks6&yLLDF3$ z8?>|IiC^V9m|BuiML~YNnDbhfOpPTQbsUYyCP&lb{?l+ai2`oF-F2l;>AS8N-X zm=ietkO2xL?--fD;ajVi$RD;b!^_P(%$qLwaAz!AjAV_0=H3IuJu7A~&$2QDt5{&U aRKJ^OW06sVapm<1pX+-WD|}b}tH59QWC=6? literal 0 HcmV?d00001 diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/controller/CheerWaterController.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/controller/CheerWaterController.class new file mode 100644 index 0000000000000000000000000000000000000000..bceeed56604c47743cc3b21d19d6cc85ba423d4d GIT binary patch literal 7309 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 literal 0 HcmV?d00001 diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/mapper/CheerWaterMapper.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/mapper/CheerWaterMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..bfa275ecb3d2674dd9ee4a32bde9426603d23112 GIT binary patch literal 344 zcmb7Au};H441EW*q3zOz-@r?^AO?__QZaPs>|Ct$qFgSz+#&VX82SPIsH#VbKoUf@7(KT6D#a0q?C*rpp5>dKf!k%7#I{9<1FyFZ7 zwY-@&nRxgeUL+sCOew7X6#h1Hy{oXiK1m^2|JO}Z1%;awx9NLG=x)ptOvjp?0S2sX A0RR91 literal 0 HcmV?d00001 diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/mapper/xml/CheerWaterMapper.xml b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/mapper/xml/CheerWaterMapper.xml new file mode 100644 index 0000000..0656457 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/mapper/xml/CheerWaterMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/service/ICheerWaterService.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/cheerWater/service/ICheerWaterService.class new file mode 100644 index 0000000000000000000000000000000000000000..fae8fac64ffd939ae510ccc4dabe3b43a6793316 GIT binary patch literal 357 zcmbVIyK2Kg5S)u2@}qI*zsMFbxKMCo2p9w@RJcB!7v+R>7w%!KUrXT+@JE>_PH-Rr z7cO>pm}Q5VJ)J*}02Y`g7$q1dmT^bppV}UlS~A)Kr#r$81q2?t>UFO~hx(U3!0no3M{1BVveI>lO8d&|!k>Wi@l*$a{jT#Pc}A3sq;bPMr67}2B7dwR zc^Sx`>x85>St<`6@ZNv;kkPh4y{AW3#oRO3Z8vd74wN%`=yGYs0~K}1(mY7IjAVm$ z_UWsS-r9Y+7^AX`Ynqkuvjo~NXOWFMjvr;UJFjF+n?9T|O^W1Z8$Fl%gnsBk*)Pu` z3Q4}7sdFW;@jGW~Lwy}I>%MQTi!6q-Ec;ejbI825qZ6+TT{!R84g*w}% a@?1p&AK0s~UqpSxr*dy%nfD^T1>6Ig>iT#9 literal 0 HcmV?d00001 diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/service/impl/AppletLoginServiceImpl.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/service/impl/AppletLoginServiceImpl.class index 181a9dd5ddf7aff8e0cd1ad2443867d4fcc7517b..90df7cd42fcf5b745fad174b19d610a68470a811 100644 GIT binary patch delta 891 zcmb`FOGs2v9LB%TdEL2lbjIg+wY1cHHREG69~qKG5M+p^m_?b7$w%fR&2XdZK#V*s z+C+v$LJ)>AS%JOFEGSxqcfU3s4z>&jr6=0UBeKA=Hdh1>u9yh5pHGcP4qM_YKP6Qfr?;`ghTut{NVtgUE4X2V2qRqSipKs%k zA3|ZHKPF)26j`9K*l>o?7mdYv> zURd^{ihbx)o2{s3y9yeBO?}2uoKb6b9A_N{6*(}$Gz{Ua`io(enV>?#ap%Huve#S2 eck-sU-g<1>+8{T)-y-vsQC9=+XCd<@jl|!|;kq*b delta 941 zcmbu7Nla5w6o&u5(|dirKpBKq5Ksg`TZV!_GyzE*5+xxbiW1PY@EicKLPbqX(52C6 zXRlg;=Q>_^@DkHH_8WMG*9L5OW64_& zZru6$QOo}B#SgnGa9RR^87v6=B#15Yl;M|Ja!3~>ZA3_3Ny?LFQqqeB?f5L{u*6B1 zpoTd?-EwZr8J6>4PL8g2rgo#U>1FXel8ZwW{$=sg1MN}FfW+Ld_wFqV-3-0 zQ`GD`&?UH(IfBcWFIXT?7Pd~KB%{yOsnN;`5^5YtH(Ohopcw$0R!Me*^@EM z>vADu-B8IRcy`@~NLv+0ir=jyj#TRow645|zkba?X&mLP!L$m${s196l&$o;6E=`) zKRu4BI93OOaa0FJ{kkF-#!+PPd{#w`4Xu7Xjun2__z;TMxc}AYf5!OTJQdS_W*Jqx z<3L2|FqSK=hK?F|Aw!uPhd!a1N!UgoT3CP`45F1G>|_<%Sci6Q#%}Jw9>x%+M1+^o z$(t~F8+$p9C^{7|3J>0)3;WRwx5|zrob|U=)KnRkJAiJrxH|8m2fb>`y&S>8M)bjs z1|G*DRqQ|``xNdloY+ni{VL{C1GHm6ISuC+KnzFJ{DX>_sUQj5(F9J`XVr2_9?NQR ZY@M7MmG82?B!yI>0kWJ`tdQ@0zF*=M%VPil diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/jeecg-boot-base-core-3.2.0.jar b/jeecg-boot-base/jeecg-boot-base-core/target/jeecg-boot-base-core-3.2.0.jar index 8a24d3ab3d9cefdc8305d6bfc7364e6d95707574..9acaafcb318f226e0e82eba23216a94b644bb1b3 100644 GIT binary patch delta 45395 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�w4f`F(< zF+%lfqxi4>m2vl(-Uq7XE`#cDRLi8peK>Lsx&`g-$3-?GseV*e^#@5_>rs8l^i#j^ z@!YB>yk9dHe&9%6O^*3>2vN9!+lx`(0iPqVxBvhE delta 20610 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 LdpsQ;x6%F&r)v1K diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/cheeroncontroller/CheerInfoController.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/cheeroncontroller/CheerInfoController.java new file mode 100644 index 0000000..7e520ae --- /dev/null +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/cheeroncontroller/CheerInfoController.java @@ -0,0 +1,54 @@ +package org.jeecg.modules.api.cheeroncontroller; + + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.apiBean.OrderWaterPageBean; +import org.jeecg.modules.apiservice.InfoApiService; +import org.jeecg.modules.hanHaiMember.entity.HanHaiMember; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@Api(tags="加油小程序-个人中心相关接口") +@RestController +@RequestMapping("/cheer/info") +@Slf4j +public class CheerInfoController { + + //获取个人中心接口 + @Resource + private InfoApiService infoApiService; + + + //获取个人信息接口 + @ApiOperation(value="小程序-获取个人信息接口", notes="小程序-获取个人信息接口") + @GetMapping("/getInfo") + public Result getInfo(@RequestHeader("X-Access-Token") String token) + { + return infoApiService.getInfo(token); + } + + + //修改个人信息接口 + @ApiOperation(value="小程序-修改个人信息接口", notes="小程序-修改个人信息接口") + @PostMapping("/updateInfo") + public Result updateInfo(@RequestHeader("X-Access-Token") String token, HanHaiMember bean) + { + return infoApiService.updateInfo(token,bean); + } + + + //获取加油流水订单 + @ApiOperation(value="小程序-获取加油流水订单", notes="小程序-获取加油流水订单") + @GetMapping("/getOrderWaterPage") + public Result getOrderWaterPage(@RequestHeader("X-Access-Token") String token, OrderWaterPageBean bean) + { + return infoApiService.getOrderWaterPage(token,bean); + } + + + +} diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/cheeroncontroller/CheerLoginApiController.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/cheeroncontroller/CheerLoginApiController.java new file mode 100644 index 0000000..260f991 --- /dev/null +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/cheeroncontroller/CheerLoginApiController.java @@ -0,0 +1,50 @@ +package org.jeecg.modules.api.cheeroncontroller; + + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.apiservice.LoginApiService; +import org.jeecg.modules.bean.LoginReq; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@Api(tags="加油小程序-登录相关接口") +@RestController +@RequestMapping("/cheer/login") +@Slf4j +public class CheerLoginApiController { + + //授权登录 + @Resource + private LoginApiService loginApiService; + + + //小程序授权登录 + @ApiOperation(value="小程序-登录接口", notes="小程序-登录接口") + @GetMapping("/login") + public Result login(LoginReq loginReq){ + return loginApiService.login(loginReq); + } + + + //获取用户协议 + @ApiOperation(value="小程序-获取用户协议", notes="小程序-获取用户协议") + @GetMapping("/getUserAgreement") + public Result getUserAgreement(){ + return loginApiService.getUserAgreement(); + } + + + //获取隐私政策 + @ApiOperation(value="小程序-获取隐私政策", notes="小程序-获取隐私政策") + @GetMapping("/getPrivacyPolicy") + public Result getPrivacyPolicy(){ + return loginApiService.getPrivacyPolicy(); + } + +} diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/noticeapicontroller/LoginApiController.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/noticeapicontroller/LoginApiController.java index e185c80..19ee009 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/noticeapicontroller/LoginApiController.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/noticeapicontroller/LoginApiController.java @@ -33,6 +33,42 @@ public class LoginApiController { + //获取用户协议 + @ApiOperation(value="小程序-获取用户协议", notes="小程序-获取用户协议") + @GetMapping("/getUserAgreement") + public Result getUserAgreement(){ + return loginApiService.getUserAgreement(); + } + + + //获取隐私政策 + @ApiOperation(value="小程序-获取隐私政策", notes="小程序-获取隐私政策") + @GetMapping("/getPrivacyPolicy") + public Result getPrivacyPolicy(){ + return loginApiService.getPrivacyPolicy(); + } + + //获取联系电话 + @ApiOperation(value="小程序-获取联系电话", notes="小程序-获取联系电话") + @GetMapping("/getPhone") + public Result getPhone(){ + return loginApiService.getPhone(); + } + + //获取联系微信 + @ApiOperation(value="小程序-获取联系微信", notes="小程序-获取联系微信") + @GetMapping("/getWechat") + public Result getWechat(){ + return loginApiService.getWechat(); + } + + //或者折扣 + @ApiOperation(value="小程序-获取折扣", notes="小程序-获取折扣") + @GetMapping("/getDiscount") + public Result getDiscount(){ + return loginApiService.getDiscount(); + } + diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/OrderPayBean.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/OrderPayBean.java new file mode 100644 index 0000000..a402a16 --- /dev/null +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/OrderPayBean.java @@ -0,0 +1,15 @@ +package org.jeecg.modules.apiBean; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OrderPayBean { + + /**支付金额*/ + @ApiModelProperty(value = "支付金额" ) + private BigDecimal money; + +} diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/OrderWaterPageBean.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/OrderWaterPageBean.java new file mode 100644 index 0000000..9c62ea4 --- /dev/null +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/OrderWaterPageBean.java @@ -0,0 +1,21 @@ +package org.jeecg.modules.apiBean; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class OrderWaterPageBean { + + + /**显示条数*/ + @ApiModelProperty(value = "显示条数" ) + private Integer pageSize; + /**当前页*/ + @ApiModelProperty(value = "当前页" ) + private Integer pageNo; + + public OrderWaterPageBean() { + this.pageNo = 1; + this.pageSize = 1000; + } +} diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/InfoApiService.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/InfoApiService.java index 90808f5..0e7e1e3 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/InfoApiService.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/InfoApiService.java @@ -1,10 +1,7 @@ package org.jeecg.modules.apiservice; import org.jeecg.common.api.vo.Result; -import org.jeecg.modules.apiBean.HanHaiBankBean; -import org.jeecg.modules.apiBean.HanHaiWaterBean; -import org.jeecg.modules.apiBean.MyReleasePageBean; -import org.jeecg.modules.apiBean.PromotionPageBean; +import org.jeecg.modules.apiBean.*; import org.jeecg.modules.hanHaiBank.entity.HanHaiBank; import org.jeecg.modules.hanHaiMember.entity.HanHaiMember; @@ -62,4 +59,10 @@ public interface InfoApiService { //用户提现 Result withdraw(String token); + + //加油小程序-获取订单流水信息 + Result getOrderWaterPage(String token,OrderWaterPageBean bean); + //加油小程序-用户输入支付创建支付订单并且支付 + Result createOrderPay(String token,OrderPayBean bean); + } diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/LoginApiService.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/LoginApiService.java index 8e2ff95..dff059a 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/LoginApiService.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/LoginApiService.java @@ -8,6 +8,23 @@ public interface LoginApiService { //小程序-登录接口 Result login(LoginReq loginReq); - //小程序-退出接口 - Result logout(); + + //获取用户协议 + Result getUserAgreement(); + + //获取隐私政策 + Result getPrivacyPolicy(); + + //获取联系电话 + Result getPhone(); + + //获取联系微信 + Result getWechat(); + + //获取折扣 + Result getDiscount(); + + //获取套餐列表 + Result getPackageList(); + } diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/InfoApiServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/InfoApiServiceImpl.java index 0cc301a..eb475bd 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/InfoApiServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/InfoApiServiceImpl.java @@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.jeecg.common.api.vo.Result; import org.jeecg.common.util.RedisUtil; import org.jeecg.config.shiro.ShiroRealm; -import org.jeecg.modules.apiBean.HanHaiBankBean; -import org.jeecg.modules.apiBean.HanHaiWaterBean; -import org.jeecg.modules.apiBean.MyReleasePageBean; -import org.jeecg.modules.apiBean.PromotionPageBean; +import org.jeecg.modules.apiBean.*; import org.jeecg.modules.apiservice.InfoApiService; import org.jeecg.modules.atPerformer.entity.AtPerformer; import org.jeecg.modules.atPerformer.service.IAtPerformerService; @@ -15,6 +12,11 @@ import org.jeecg.modules.atPromotion.entity.AtPromotion; import org.jeecg.modules.atPromotion.service.IAtPromotionService; import org.jeecg.modules.atTrends.entity.AtTrends; import org.jeecg.modules.atTrends.service.IAtTrendsService; +import org.jeecg.modules.cheerConf.entity.CheerConf; +import org.jeecg.modules.cheerConf.service.ICheerConfService; +import org.jeecg.modules.cheerRecharge.service.ICheerRechargeService; +import org.jeecg.modules.cheerWater.entity.CheerWater; +import org.jeecg.modules.cheerWater.service.ICheerWaterService; import org.jeecg.modules.hanHaiBank.entity.HanHaiBank; import org.jeecg.modules.hanHaiBank.service.IHanHaiBankService; import org.jeecg.modules.hanHaiMember.entity.HanHaiMember; @@ -28,6 +30,8 @@ import org.jeecg.modules.hanHaiWater.service.IHanHaiWaterService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.Date; import java.util.List; @Service @@ -63,6 +67,18 @@ public class InfoApiServiceImpl implements InfoApiService { + + + //加油小程序 + @Resource + private ICheerWaterService cheerWaterService; + @Resource + private ICheerConfService cheerConfService; + + + + + //获取个人信息接口 @Override public Result getInfo(String token){ @@ -208,4 +224,65 @@ public class InfoApiServiceImpl implements InfoApiService { return Result.OK(); } + + + + + //加油小程序相关 + + //加油小程序-获取订单流水信息 + @Override + public Result getOrderWaterPage(String token, OrderWaterPageBean bean){ + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + Page page = new Page(bean.getPageNo(), bean.getPageSize()); + Page page1 = cheerWaterService.lambdaQuery() + .eq(CheerWater::getUserId, hanHaiMember.getId()) + .orderByDesc(CheerWater::getCreateTime) + .page(page); + + return Result.OK("加油流水",page1); + } + + + //加油小程序-用户输入支付创建支付订单并且支付 + @Override + public Result createOrderPay(String token, OrderPayBean bean){ + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + //判断输入金额是否为空 + if(bean.getMoney() == null){ + return Result.error("支付金额不能为空"); + } + //查询当前折扣 + CheerConf one = cheerConfService.lambdaQuery() + .eq(CheerConf::getKeyValue, "preferential") + .one(); + //判断折扣是否为空 + if(one == null){ + return Result.error("当前没有折扣"); + } + //得到折扣值转为BigDecimal类型 + BigDecimal discount = new BigDecimal(one.getKeyCentent()); + if(bean.getMoney().compareTo(new BigDecimal(0)) == 0){ + return Result.error("支付金额不能为0"); + } + if(bean.getMoney().compareTo(new BigDecimal(0)) == -1){ + return Result.error("支付金额不能为负数"); + } + BigDecimal oldMoney = bean.getMoney(); + //支付金额乘折扣保留两位小数 + BigDecimal money = bean.getMoney().multiply(discount).setScale(2, BigDecimal.ROUND_HALF_UP); + + //创建订单流水 + CheerWater cheerWater = new CheerWater(); + cheerWater.setUserId(hanHaiMember.getId()); + cheerWater.setOldPrice(oldMoney); + cheerWater.setPrice(money); + cheerWater.setState("0"); + cheerWater.setCreateTime(new Date()); + cheerWaterService.save(cheerWater); + + + return Result.OK("支付成功"); + } + } diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/LoginApiServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/LoginApiServiceImpl.java index 678fb2a..2518231 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/LoginApiServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/LoginApiServiceImpl.java @@ -3,16 +3,25 @@ package org.jeecg.modules.apiservice.impl; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.apiservice.LoginApiService; import org.jeecg.modules.bean.LoginReq; +import org.jeecg.modules.cheerConf.entity.CheerConf; +import org.jeecg.modules.cheerConf.service.ICheerConfService; +import org.jeecg.modules.cheerRecharge.entity.CheerRecharge; +import org.jeecg.modules.cheerRecharge.service.ICheerRechargeService; import org.jeecg.modules.service.AppletLoginService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.List; @Service public class LoginApiServiceImpl implements LoginApiService { @Resource private AppletLoginService appletLoginService; + @Resource + private ICheerConfService cheerConfService; + @Resource + private ICheerRechargeService cheerRechargeService; //小程序-登录接口 @Override @@ -21,13 +30,63 @@ public class LoginApiServiceImpl implements LoginApiService { return appletLoginService.appletLogin(loginReq); } - //小程序-退出接口 + + //小程序-获取用户协议 @Override - public Result logout() + public Result getUserAgreement() { - return null; + + return Result.OK("用户协议"); } + //获取隐私政策 + @Override + public Result getPrivacyPolicy() + { + + return Result.OK("隐私政策"); + } + + + //获取联系电话 + @Override + public Result getPhone(){ + CheerConf one = cheerConfService.lambdaQuery() + .eq(CheerConf::getKeyValue, "phone") + .one(); + + return Result.OK("电话",one.getKeyCentent()); + } + + //获取联系微信 + @Override + public Result getWechat(){ + CheerConf one = cheerConfService.lambdaQuery() + .eq(CheerConf::getKeyValue, "wx") + .one(); + + return Result.OK("微信",one.getKeyCentent()); + } + + //获取折扣 + @Override + public Result getDiscount(){ + CheerConf one = cheerConfService.lambdaQuery() + .eq(CheerConf::getKeyValue, "preferential") + .one(); + + return Result.OK("折扣",one.getKeyCentent()); + } + + + //获取套餐列表 + @Override + public Result getPackageList(){ + List list = cheerRechargeService.lambdaQuery() + .orderByDesc(CheerRecharge::getCreateTime) + .list(); + return Result.OK("套餐列表",list); + }