From e3433f853f74ffaa7ef1afde5aed62729e29816e Mon Sep 17 00:00:00 2001 From: Aug <17674666882@163.com> Date: Sat, 17 May 2025 19:37:21 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jeecg/modules/pay/MpWxPayService.java | 38 +++++ .../controller/MassageOrderController.java | 2 +- .../modules/massageOrder/entity/MassageOrder.java | 20 ++- .../massageOrder/mapper/MassageOrderMapper.java | 2 +- .../massageOrder/service/IMassageOrderService.java | 2 +- .../service/impl/MassageOrderServiceImpl.java | 2 +- .../modules/massageOrder/vue/MassageOrderList.vue | 18 +- .../massageOrder/vue/modules/MassageOrderForm.vue | 14 +- .../modules/massageOrder/vue3/MassageOrder.data.ts | 36 +++- .../controller/MassageRefundController.java | 171 +++++++++++++++++++ .../massageRefund/entity/MassageRefund.java | 63 +++++++ .../massageRefund/mapper/MassageRefundMapper.java | 17 ++ .../mapper/xml/MassageRefundMapper.xml | 5 + .../service/IMassageRefundService.java | 14 ++ .../service/impl/MassageRefundServiceImpl.java | 19 +++ .../massageRefund/vue/MassageRefundList.vue | 184 +++++++++++++++++++++ .../vue/modules/MassageRefundForm.vue | 114 +++++++++++++ .../modules/MassageRefundModal.Style#Drawer.vue | 84 ++++++++++ .../vue/modules/MassageRefundModal.vue | 60 +++++++ .../massageRefund/vue3/MassageRefund.api.ts | 61 +++++++ .../massageRefund/vue3/MassageRefund.data.ts | 49 ++++++ .../massageRefund/vue3/MassageRefundList.vue | 162 ++++++++++++++++++ .../vue3/components/MassageRefundModal.vue | 58 +++++++ .../controller/MassageVipRecordController.java | 2 +- .../massageVipRecord/entity/MassageVipRecord.java | 13 +- .../mapper/MassageVipRecordMapper.java | 2 +- .../service/IMassageVipRecordService.java | 2 +- .../service/impl/MassageVipRecordServiceImpl.java | 2 +- .../massageVipRecord/vue/MassageVipRecordList.vue | 15 +- .../vue/modules/MassageVipRecordForm.vue | 12 +- .../massageVipRecord/vue3/MassageVipRecord.data.ts | 22 ++- .../api/massageController/OrderController.java | 21 +++ .../api/massageController/VipController.java | 16 +- .../org/jeecg/modules/apiService/OrderService.java | 9 + .../org/jeecg/modules/apiService/VipService.java | 5 +- .../modules/apiService/impl/OrderServiceImpl.java | 133 ++++++++++++++- .../apiService/impl/UserInfoServiceImpl.java | 16 ++ .../modules/apiService/impl/VipServiceImpl.java | 83 +++++++++- .../src/main/resources/application-dev.yml | 4 +- 39 files changed, 1512 insertions(+), 40 deletions(-) create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/controller/MassageRefundController.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/entity/MassageRefund.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/mapper/MassageRefundMapper.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/mapper/xml/MassageRefundMapper.xml create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/service/IMassageRefundService.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/service/impl/MassageRefundServiceImpl.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue/MassageRefundList.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue/modules/MassageRefundForm.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue/modules/MassageRefundModal.Style#Drawer.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue/modules/MassageRefundModal.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue3/MassageRefund.api.ts create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue3/MassageRefund.data.ts create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue3/MassageRefundList.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue3/components/MassageRefundModal.vue diff --git a/han-hai-module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java b/han-hai-module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java index 45015d2..4dd4941 100644 --- a/han-hai-module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java +++ b/han-hai-module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java @@ -115,6 +115,44 @@ public class MpWxPayService { } } + /** + * 微信吊起支付 + * @param productName + * @param clientIp + * @param productId + * @param price + * @param orderNo + * @param openId + * @param body + * @return + */ + public Object createOrder2(String productName, String clientIp, + String productId, Integer price, String orderNo, + String openId, String body){ + WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest(); + request.setDeviceInfo("WEB"); //设备号 + request.setTradeType("JSAPI"); //交易类型 + request.setBody(productName); //商品描述 + request.setOutTradeNo(orderNo); //商户订单号 + request.setDetail(productName); //商品详情 + request.setTotalFee(price); //总金额|分计 + request.setSpbillCreateIp(clientIp); //终端IP + request.setNotifyUrl("https://www.yurangongfang.com/massage-admin/massage/vip/addVipNotify");//设置回调路径 + request.setProductId(productId); //商品id + request.setOpenid(openId); //JSAPI OPENID + if (dev){ + request.setTotalFee(price); + //request.setNotifyUrl("https://www.yurangongfang.com/massage-admin/massage/order/addVipNotify");//设置回调路径 + request.setNotifyUrl("https://www.yurangongfang.com/massage-admin/massage/vip/addVipNotify");//设置回调路径 + } + try { + Object order = wxPayService.createOrder(request); + return order; + } catch (WxPayException e) { + e.printStackTrace(); + return e.getLocalizedMessage(); + } + } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/controller/MassageOrderController.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/controller/MassageOrderController.java index 90b00c0..fcdf11e 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/controller/MassageOrderController.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/controller/MassageOrderController.java @@ -39,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-03-19 + * @Date: 2025-05-17 * @Version: V1.0 */ @Api(tags="订单信息表") diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/entity/MassageOrder.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/entity/MassageOrder.java index f263f4c..c4fae78 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/entity/MassageOrder.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/entity/MassageOrder.java @@ -22,7 +22,7 @@ import lombok.experimental.Accessors; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-03-19 + * @Date: 2025-05-17 * @Version: V1.0 */ @Data @@ -58,6 +58,10 @@ public class MassageOrder implements Serializable { @Excel(name = "有效时间", width = 15) @ApiModelProperty(value = "有效时间") private java.util.Date validTime; + /**实付款*/ + @Excel(name = "实付款", width = 15) + @ApiModelProperty(value = "实付款") + private java.math.BigDecimal amount; /**付款时间*/ @Excel(name = "付款时间", width = 15) @ApiModelProperty(value = "付款时间") @@ -66,10 +70,11 @@ public class MassageOrder implements Serializable { @Excel(name = "核销时间", width = 15) @ApiModelProperty(value = "核销时间") private java.util.Date useTime; - /**实付款*/ - @Excel(name = "实付款", width = 15) - @ApiModelProperty(value = "实付款") - private java.math.BigDecimal amount; + /**核销门店id*/ + @Excel(name = "核销门店id", width = 15, dictTable = "massage_shop", dicText = "shop", dicCode = "id") + @Dict(dictTable = "massage_shop", dicText = "shop", dicCode = "id") + @ApiModelProperty(value = "核销门店id") + private java.lang.String shopId; /**关联项目id*/ @Excel(name = "关联项目id", width = 15, dictTable = "massage_item", dicText = "title", dicCode = "id") @Dict(dictTable = "massage_item", dicText = "title", dicCode = "id") @@ -80,6 +85,11 @@ public class MassageOrder implements Serializable { @Dict(dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id") @ApiModelProperty(value = "关联用户id") private java.lang.String userId; + /**是否删除*/ + @Excel(name = "是否删除", width = 15, dicCode = "is_del") + @Dict(dicCode = "is_del") + @ApiModelProperty(value = "是否删除") + private java.lang.String isDel; //项目信息 @TableField(exist = false) diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/mapper/MassageOrderMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/mapper/MassageOrderMapper.java index dbd68de..d7cc0a4 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/mapper/MassageOrderMapper.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/mapper/MassageOrderMapper.java @@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-03-19 + * @Date: 2025-05-17 * @Version: V1.0 */ public interface MassageOrderMapper extends BaseMapper { diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/IMassageOrderService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/IMassageOrderService.java index 9fb8bca..5ee84b2 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/IMassageOrderService.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/IMassageOrderService.java @@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-03-19 + * @Date: 2025-05-17 * @Version: V1.0 */ public interface IMassageOrderService extends IService { diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/impl/MassageOrderServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/impl/MassageOrderServiceImpl.java index de17add..29acc80 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/impl/MassageOrderServiceImpl.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/impl/MassageOrderServiceImpl.java @@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-03-19 + * @Date: 2025-05-17 * @Version: V1.0 */ @Service diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/vue/MassageOrderList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/vue/MassageOrderList.vue index aecac98..3b739aa 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/vue/MassageOrderList.vue +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/vue/MassageOrderList.vue @@ -132,6 +132,11 @@ align:"center", dataIndex: 'validTime' }, + { + title:'实付款', + align:"center", + dataIndex: 'amount' + }, { title:'付款时间', align:"center", @@ -143,9 +148,9 @@ dataIndex: 'useTime' }, { - title:'实付款', + title:'核销门店id', align:"center", - dataIndex: 'amount' + dataIndex: 'shopId_dictText' }, { title:'关联项目id', @@ -157,6 +162,11 @@ align:"center", dataIndex: 'userId_dictText' }, + { + title:'是否删除', + align:"center", + dataIndex: 'isDel_dictText' + }, { title: '操作', dataIndex: 'action', @@ -193,11 +203,13 @@ let fieldList=[]; fieldList.push({type:'string',value:'status',text:'状态',dictCode:'massage_status'}) fieldList.push({type:'datetime',value:'validTime',text:'有效时间'}) + fieldList.push({type:'BigDecimal',value:'amount',text:'实付款',dictCode:''}) fieldList.push({type:'datetime',value:'payTime',text:'付款时间'}) fieldList.push({type:'datetime',value:'useTime',text:'核销时间'}) - fieldList.push({type:'BigDecimal',value:'amount',text:'实付款',dictCode:''}) + fieldList.push({type:'string',value:'shopId',text:'核销门店id',dictCode:"massage_shop,shop,id"}) fieldList.push({type:'string',value:'itemId',text:'关联项目id',dictCode:"massage_item,title,id"}) fieldList.push({type:'string',value:'userId',text:'关联用户id',dictCode:"han_hai_member,nick_name,id"}) + fieldList.push({type:'string',value:'isDel',text:'是否删除',dictCode:'is_del'}) this.superFieldList = fieldList } } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/vue/modules/MassageOrderForm.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/vue/modules/MassageOrderForm.vue index a7af628..945f329 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/vue/modules/MassageOrderForm.vue +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/vue/modules/MassageOrderForm.vue @@ -13,6 +13,11 @@ + + + + + @@ -24,8 +29,8 @@ - - + + @@ -38,6 +43,11 @@ + + + + + diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/vue3/MassageOrder.data.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/vue3/MassageOrder.data.ts index f5b47c2..811c320 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/vue3/MassageOrder.data.ts +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/vue3/MassageOrder.data.ts @@ -14,6 +14,11 @@ export const columns: BasicColumn[] = [ align:"center", dataIndex: 'validTime' }, + { + title: '实付款', + align:"center", + dataIndex: 'amount' + }, { title: '付款时间', align:"center", @@ -25,9 +30,9 @@ export const columns: BasicColumn[] = [ dataIndex: 'useTime' }, { - title: '实付款', + title: '核销门店id', align:"center", - dataIndex: 'amount' + dataIndex: 'shopId_dictText' }, { title: '关联项目id', @@ -39,6 +44,11 @@ export const columns: BasicColumn[] = [ align:"center", dataIndex: 'userId_dictText' }, + { + title: '是否删除', + align:"center", + dataIndex: 'isDel_dictText' + }, ]; //查询数据 export const searchFormSchema: FormSchema[] = [ @@ -58,6 +68,11 @@ export const formSchema: FormSchema[] = [ field: 'validTime', component: 'Input', }, + { + label: '实付款', + field: 'amount', + component: 'InputNumber', + }, { label: '付款时间', field: 'payTime', @@ -69,9 +84,12 @@ export const formSchema: FormSchema[] = [ component: 'Input', }, { - label: '实付款', - field: 'amount', - component: 'InputNumber', + label: '核销门店id', + field: 'shopId', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"massage_shop,shop,id" + }, }, { label: '关联项目id', @@ -89,4 +107,12 @@ export const formSchema: FormSchema[] = [ dictCode:"han_hai_member,nick_name,id" }, }, + { + label: '是否删除', + field: 'isDel', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"is_del" + }, + }, ]; diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/controller/MassageRefundController.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/controller/MassageRefundController.java new file mode 100644 index 0000000..02af74a --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/controller/MassageRefundController.java @@ -0,0 +1,171 @@ +package org.jeecg.modules.massageRefund.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.massageRefund.entity.MassageRefund; +import org.jeecg.modules.massageRefund.service.IMassageRefundService; + +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: 2025-05-16 + * @Version: V1.0 + */ +@Api(tags="退款申请表") +@RestController +@RequestMapping("/massageRefund/massageRefund") +@Slf4j +public class MassageRefundController extends JeecgController { + @Autowired + private IMassageRefundService massageRefundService; + + /** + * 分页列表查询 + * + * @param massageRefund + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "退款申请表-分页列表查询") + @ApiOperation(value="退款申请表-分页列表查询", notes="退款申请表-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(MassageRefund massageRefund, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(massageRefund, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = massageRefundService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param massageRefund + * @return + */ + @AutoLog(value = "退款申请表-添加") + @ApiOperation(value="退款申请表-添加", notes="退款申请表-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody MassageRefund massageRefund) { + massageRefundService.save(massageRefund); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param massageRefund + * @return + */ + @AutoLog(value = "退款申请表-编辑") + @ApiOperation(value="退款申请表-编辑", notes="退款申请表-编辑") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody MassageRefund massageRefund) { + massageRefundService.updateById(massageRefund); + 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) { + massageRefundService.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.massageRefundService.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) { + MassageRefund massageRefund = massageRefundService.getById(id); + if(massageRefund==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(massageRefund); + } + + /** + * 导出excel + * + * @param request + * @param massageRefund + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, MassageRefund massageRefund) { + return super.exportXls(request, massageRefund, MassageRefund.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, MassageRefund.class); + } + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/entity/MassageRefund.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/entity/MassageRefund.java new file mode 100644 index 0000000..01eeed3 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/entity/MassageRefund.java @@ -0,0 +1,63 @@ +package org.jeecg.modules.massageRefund.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: 2025-05-16 + * @Version: V1.0 + */ +@Data +@TableName("massage_refund") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="massage_refund对象", description="退款申请表") +public class MassageRefund 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; + /**关联订单id*/ + @Excel(name = "关联订单id", width = 15) + @ApiModelProperty(value = "关联订单id") + private java.lang.String orderId; + /**退款金额*/ + @Excel(name = "退款金额", width = 15) + @ApiModelProperty(value = "退款金额") + private java.math.BigDecimal amount; + /**关联用户id*/ + @Excel(name = "关联用户id", width = 15, dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id") + @Dict(dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id") + @ApiModelProperty(value = "关联用户id") + private java.lang.String userId; +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/mapper/MassageRefundMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/mapper/MassageRefundMapper.java new file mode 100644 index 0000000..fb1ddb3 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/mapper/MassageRefundMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.massageRefund.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.massageRefund.entity.MassageRefund; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 退款申请表 + * @Author: jeecg-boot + * @Date: 2025-05-16 + * @Version: V1.0 + */ +public interface MassageRefundMapper extends BaseMapper { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/mapper/xml/MassageRefundMapper.xml b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/mapper/xml/MassageRefundMapper.xml new file mode 100644 index 0000000..f2a7528 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/mapper/xml/MassageRefundMapper.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/massageRefund/service/IMassageRefundService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/service/IMassageRefundService.java new file mode 100644 index 0000000..fd71692 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/service/IMassageRefundService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.massageRefund.service; + +import org.jeecg.modules.massageRefund.entity.MassageRefund; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 退款申请表 + * @Author: jeecg-boot + * @Date: 2025-05-16 + * @Version: V1.0 + */ +public interface IMassageRefundService extends IService { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/service/impl/MassageRefundServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/service/impl/MassageRefundServiceImpl.java new file mode 100644 index 0000000..4a2b16d --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/service/impl/MassageRefundServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.massageRefund.service.impl; + +import org.jeecg.modules.massageRefund.entity.MassageRefund; +import org.jeecg.modules.massageRefund.mapper.MassageRefundMapper; +import org.jeecg.modules.massageRefund.service.IMassageRefundService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 退款申请表 + * @Author: jeecg-boot + * @Date: 2025-05-16 + * @Version: V1.0 + */ +@Service +public class MassageRefundServiceImpl extends ServiceImpl implements IMassageRefundService { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue/MassageRefundList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue/MassageRefundList.vue new file mode 100644 index 0000000..94d184e --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue/MassageRefundList.vue @@ -0,0 +1,184 @@ + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue/modules/MassageRefundForm.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue/modules/MassageRefundForm.vue new file mode 100644 index 0000000..86eae1c --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue/modules/MassageRefundForm.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/massageRefund/vue/modules/MassageRefundModal.Style#Drawer.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue/modules/MassageRefundModal.Style#Drawer.vue new file mode 100644 index 0000000..a8d4c58 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue/modules/MassageRefundModal.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/massageRefund/vue/modules/MassageRefundModal.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue/modules/MassageRefundModal.vue new file mode 100644 index 0000000..df69c6f --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue/modules/MassageRefundModal.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/massageRefund/vue3/MassageRefund.api.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue3/MassageRefund.api.ts new file mode 100644 index 0000000..d10fab0 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue3/MassageRefund.api.ts @@ -0,0 +1,61 @@ +import {defHttp} from '/@/utils/http/axios'; +import {Modal} from 'ant-design-vue'; + +enum Api { + list = '/massageRefund/massageRefund/list', + save='/massageRefund/massageRefund/add', + edit='/massageRefund/massageRefund/edit', + deleteOne = '/massageRefund/massageRefund/delete', + deleteBatch = '/massageRefund/massageRefund/deleteBatch', + importExcel = '/massageRefund/massageRefund/importExcel', + exportXls = '/massageRefund/massageRefund/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/massageRefund/vue3/MassageRefund.data.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue3/MassageRefund.data.ts new file mode 100644 index 0000000..c7d168e --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue3/MassageRefund.data.ts @@ -0,0 +1,49 @@ +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: '关联订单id', + align:"center", + dataIndex: 'orderId_dictText' + }, + { + title: '退款金额', + align:"center", + dataIndex: 'amount' + }, + { + title: '关联用户id', + align:"center", + dataIndex: 'userId_dictText' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '关联订单id', + field: 'orderId', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"" + }, + }, + { + label: '退款金额', + field: 'amount', + component: 'InputNumber', + }, + { + label: '关联用户id', + field: 'userId', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"han_hai_member,nick_name,id" + }, + }, +]; diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue3/MassageRefundList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue3/MassageRefundList.vue new file mode 100644 index 0000000..2a2cf0b --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue3/MassageRefundList.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/massageRefund/vue3/components/MassageRefundModal.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue3/components/MassageRefundModal.vue new file mode 100644 index 0000000..cc94a74 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageRefund/vue3/components/MassageRefundModal.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/massageVipRecord/controller/MassageVipRecordController.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/controller/MassageVipRecordController.java index 628c98c..3ed68b5 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/controller/MassageVipRecordController.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/controller/MassageVipRecordController.java @@ -39,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog; /** * @Description: 会员充值记录表 * @Author: jeecg-boot - * @Date: 2025-03-19 + * @Date: 2025-05-15 * @Version: V1.0 */ @Api(tags="会员充值记录表") diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/entity/MassageVipRecord.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/entity/MassageVipRecord.java index 3ac7e57..c6653be 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/entity/MassageVipRecord.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/entity/MassageVipRecord.java @@ -20,7 +20,7 @@ import lombok.experimental.Accessors; /** * @Description: 会员充值记录表 * @Author: jeecg-boot - * @Date: 2025-03-19 + * @Date: 2025-05-15 * @Version: V1.0 */ @Data @@ -55,8 +55,17 @@ public class MassageVipRecord implements Serializable { @Excel(name = "金额", width = 15) @ApiModelProperty(value = "金额") private java.math.BigDecimal amount; + /**支付时间*/ + @Excel(name = "支付时间", width = 15) + @ApiModelProperty(value = "支付时间") + private java.util.Date payTime; + /**支付状态*/ + @Excel(name = "支付状态", width = 15) + @ApiModelProperty(value = "支付状态") + private java.lang.String status; /**关联用户*/ - @Excel(name = "关联用户", width = 15) + @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; } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/mapper/MassageVipRecordMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/mapper/MassageVipRecordMapper.java index 7dafeaa..809a46c 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/mapper/MassageVipRecordMapper.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/mapper/MassageVipRecordMapper.java @@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @Description: 会员充值记录表 * @Author: jeecg-boot - * @Date: 2025-03-19 + * @Date: 2025-05-15 * @Version: V1.0 */ public interface MassageVipRecordMapper extends BaseMapper { diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/service/IMassageVipRecordService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/service/IMassageVipRecordService.java index 22d7b16..92f087b 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/service/IMassageVipRecordService.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/service/IMassageVipRecordService.java @@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; /** * @Description: 会员充值记录表 * @Author: jeecg-boot - * @Date: 2025-03-19 + * @Date: 2025-05-15 * @Version: V1.0 */ public interface IMassageVipRecordService extends IService { diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/service/impl/MassageVipRecordServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/service/impl/MassageVipRecordServiceImpl.java index 6a872fb..a26ef92 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/service/impl/MassageVipRecordServiceImpl.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/service/impl/MassageVipRecordServiceImpl.java @@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: 会员充值记录表 * @Author: jeecg-boot - * @Date: 2025-03-19 + * @Date: 2025-05-15 * @Version: V1.0 */ @Service diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/vue/MassageVipRecordList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/vue/MassageVipRecordList.vue index 8c10e7f..baa9099 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/vue/MassageVipRecordList.vue +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/vue/MassageVipRecordList.vue @@ -99,6 +99,7 @@ import { mixinDevice } from '@/utils/mixin' import { JeecgListMixin } from '@/mixins/JeecgListMixin' import MassageVipRecordModal from './modules/MassageVipRecordModal' + import {filterMultiDictText} from '@/components/dict/JDictSelectUtil' export default { name: 'MassageVipRecordList', @@ -131,6 +132,16 @@ align:"center", dataIndex: 'amount' }, + { + title:'支付时间', + align:"center", + dataIndex: 'payTime' + }, + { + title:'支付状态', + align:"center", + dataIndex: 'status' + }, { title:'关联用户', align:"center", @@ -172,7 +183,9 @@ let fieldList=[]; fieldList.push({type:'string',value:'title',text:'标题',dictCode:''}) fieldList.push({type:'BigDecimal',value:'amount',text:'金额',dictCode:''}) - fieldList.push({type:'string',value:'userId',text:'关联用户',dictCode:''}) + fieldList.push({type:'datetime',value:'payTime',text:'支付时间'}) + fieldList.push({type:'string',value:'status',text:'支付状态',dictCode:''}) + fieldList.push({type:'string',value:'userId',text:'关联用户',dictCode:"han_hai_member,nick_name,id"}) this.superFieldList = fieldList } } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/vue/modules/MassageVipRecordForm.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/vue/modules/MassageVipRecordForm.vue index 24e0cec..0ee2c37 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/vue/modules/MassageVipRecordForm.vue +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/vue/modules/MassageVipRecordForm.vue @@ -13,9 +13,19 @@ + + + + + + + + + + - + diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/vue3/MassageVipRecord.data.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/vue3/MassageVipRecord.data.ts index 9635041..d8281d3 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/vue3/MassageVipRecord.data.ts +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageVipRecord/vue3/MassageVipRecord.data.ts @@ -14,6 +14,16 @@ export const columns: BasicColumn[] = [ align:"center", dataIndex: 'amount' }, + { + title: '支付时间', + align:"center", + dataIndex: 'payTime' + }, + { + title: '支付状态', + align:"center", + dataIndex: 'status' + }, { title: '关联用户', align:"center", @@ -35,12 +45,22 @@ export const formSchema: FormSchema[] = [ field: 'amount', component: 'InputNumber', }, + { + label: '支付时间', + field: 'payTime', + component: 'Input', + }, + { + label: '支付状态', + field: 'status', + component: 'Input', + }, { label: '关联用户', field: 'userId', component: 'JDictSelectTag', componentProps:{ - dictCode:"" + dictCode:"han_hai_member,nick_name,id" }, }, ]; diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/massageController/OrderController.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/massageController/OrderController.java index 99ecba1..a1954ed 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/massageController/OrderController.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/massageController/OrderController.java @@ -46,6 +46,13 @@ public class OrderController { return orderService.createOrder(token, massageOrder, payType); } + //取消订单 + @ApiOperation(value="订单-取消订单", notes="订单-取消订单") + @RequestMapping(value = "/cancelOrder", method = {RequestMethod.POST}) + public Result cancelOrder(@RequestHeader("X-Access-Token") String token, String orderId){ + return orderService.cancelOrder(token, orderId); + } + //支付订单 @ApiOperation(value="订单-支付订单", notes="支付方式(payType):0-微信支付 1-余额支付") @RequestMapping(value = "/payOrder", method = {RequestMethod.POST}) @@ -60,6 +67,20 @@ public class OrderController { return orderService.overOrder(token, orderId); } + //申请退款 + @ApiOperation(value="订单-申请退款", notes="订单-申请退款") + @RequestMapping(value = "/rollbackOrder", method = {RequestMethod.POST}) + public Result rollbackOrder(@RequestHeader("X-Access-Token") String token, String orderId){ + return orderService.rollbackOrder(token, orderId); + } + + //核销订单列表 + @ApiOperation(value="订单-核销订单列表", notes="订单-核销订单列表") + @RequestMapping(value = "/overOrderList", method = {RequestMethod.POST}) + public Result overOrderList(@RequestHeader("X-Access-Token") String token, PageBean pageBean){ + return orderService.overOrderList(token, pageBean); + } + //支付回调 @PostMapping("/payOrderNotify") public Object payOrderNotify(@RequestBody String requestBody){ diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/massageController/VipController.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/massageController/VipController.java index 80ff516..610a387 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/massageController/VipController.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/massageController/VipController.java @@ -9,10 +9,7 @@ import org.jeecg.modules.apiService.BannerService; import org.jeecg.modules.apiService.VipService; import org.jeecg.modules.massageVipCombo.entity.MassageVipCombo; import org.jeecg.modules.massageVipRecord.entity.MassageVipRecord; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -37,8 +34,15 @@ public class VipController { //会员中心-开通会员 @ApiOperation(value="会员中心-开通会员", notes="会员中心-开通会员") @RequestMapping(value = "/addVip", method = {RequestMethod.POST}) - public Result addVip(@RequestHeader("X-Access-Token") String token, MassageVipRecord vipRecord){ - return null; + public Result addVip(@RequestHeader("X-Access-Token") String token, String comoId){ + return vipService.addVip(token, comoId); + } + + //开通会员支付回调 + //支付回调 + @PostMapping("/addVipNotify") + public Object addVipNotify(@RequestBody String requestBody){ + return vipService.addVipNotify(requestBody); } } diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/OrderService.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/OrderService.java index c8f1283..6bb3b00 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/OrderService.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/OrderService.java @@ -19,12 +19,21 @@ public interface OrderService { //创建订单 public Result createOrder(String token, MassageOrder massageOrder, String payType); + //取消订单 + public Result cancelOrder(String token, String orderId); + //支付订单 public Result payOrder(String token, String orderId, String payType); //订单核销 public Result overOrder(String token, String orderId); + //申请退款 + public Result rollbackOrder(String token, String orderId); + + //核销订单列表 + public Result overOrderList(String token, PageBean pageBean); + //支付回调 Object payOrderNotify(String requestBody); } diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/VipService.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/VipService.java index 54ae62d..2042ce1 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/VipService.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/VipService.java @@ -14,5 +14,8 @@ public interface VipService { public Result queryComboList(MassageVipCombo vipCombo, PageBean pageBean); //会员中心-开通会员 - public Result addVip(String token, MassageVipRecord vipRecord); + public Result addVip(String token, String comoId); + + //支付回调 + Object addVipNotify(String requestBody); } diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/OrderServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/OrderServiceImpl.java index 73faba5..cdb5c30 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/OrderServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/OrderServiceImpl.java @@ -17,7 +17,10 @@ import org.jeecg.modules.massageItem.entity.MassageItem; import org.jeecg.modules.massageItem.service.IMassageItemService; import org.jeecg.modules.massageOrder.entity.MassageOrder; import org.jeecg.modules.massageOrder.service.IMassageOrderService; +import org.jeecg.modules.massageRefund.entity.MassageRefund; +import org.jeecg.modules.massageRefund.service.IMassageRefundService; import org.jeecg.modules.massageShop.entity.MassageShop; +import org.jeecg.modules.massageShop.service.IMassageShopService; import org.jeecg.modules.pay.MpWxPayService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,6 +47,12 @@ public class OrderServiceImpl implements OrderService { //项目信息 @Resource private IMassageItemService massageItemService; + //退款申请 + @Resource + private IMassageRefundService massageRefundService; + //门店信息 + @Resource + private IMassageShopService massageShopService; /******************************************************************************************************************/ //查看订单列表 @@ -170,6 +179,8 @@ public class OrderServiceImpl implements OrderService { if(balance.compareTo(amount) == 1 ){ //等同于a>b balance = balance.subtract(amount); + }else { + return Result.error("余额不足,支付失败"); } //修改用户余额 hanHaiMember.setPrice(balance); @@ -190,6 +201,33 @@ public class OrderServiceImpl implements OrderService { } + //取消订单 + @Override + public Result cancelOrder(String token, String orderId){ + //权限验证 + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + + try{ + //查询订单是否存在 + MassageOrder massageOrder = massageOrderService + .lambdaQuery() + .eq(MassageOrder::getId, orderId) + .eq(MassageOrder::getUserId, hanHaiMember.getId()) + .one(); + if(null == massageOrder){ + return Result.error("订单不存在,请检查订单编号:"+orderId); + } + + //修改订单状态为已取消 + massageOrder.setStatus("3"); + massageOrderService.updateById(massageOrder); + return Result.OK("操作成功"); + }catch (Exception e){ + e.printStackTrace(); + return Result.error("操作失败"); + } + } + //支付订单 @Override public Result payOrder(String token, String orderId, String payType) { @@ -263,6 +301,16 @@ public class OrderServiceImpl implements OrderService { HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); try { + //查询核销店铺信息 + MassageShop shop = massageShopService + .lambdaQuery() + .eq(MassageShop::getUserId, hanHaiMember.getId()) + .eq(MassageShop::getStatus, 1) + .one(); + if(null == shop){ + return Result.error("核销失败,用户不存在审核通过的店铺信息"); + } + //订单信息 MassageOrder massageOrder = massageOrderService.getById(orderId); @@ -271,10 +319,11 @@ public class OrderServiceImpl implements OrderService { //修改订单信息 massageOrder.setStatus("2");//订单状态 - massageOrder.setUseTime(CommonUtils.getCurrentTime());//订单支付时间 + massageOrder.setShopId(shop.getId());//核销店铺 + massageOrder.setUseTime(CommonUtils.getCurrentTime());//订单核销时间 massageOrderService.updateById(massageOrder); - return Result.error("核销成功"); + return Result.OK("核销成功"); }catch (Exception e){ e.printStackTrace(); @@ -283,6 +332,86 @@ public class OrderServiceImpl implements OrderService { } + //申请退款 + public Result rollbackOrder(String token, String orderId){ + //权限验证 + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + + try{ + //查看订单是否存在 + MassageOrder order = massageOrderService + .lambdaQuery() + .eq(MassageOrder::getId, orderId) + .eq(MassageOrder::getUserId, hanHaiMember.getId()) + .one(); + + if(null == order){ + return Result.error("退款订单不存在,请检查订单id:"+orderId); + } + + //添加退款信息 + MassageRefund refund = new MassageRefund(); + refund.setAmount(order.getAmount()); + refund.setOrderId(order.getId()); + refund.setUserId(hanHaiMember.getId()); + massageRefundService.save(refund); + return Result.OK("退款申请已发起,请耐心等候商家审核"); + }catch (Exception e){ + e.printStackTrace(); + return Result.OK("退款失败"); + } + } + + //核销订单列表 + @Override + public Result overOrderList(String token, PageBean pageBean) { + //权限验证 + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + //返回信息 + String massege = ""; + //分页信息 + Page page = null; + //查询信息 + LambdaQueryChainWrapper query = null; + //返回信息 + Page pageList = null; + + try{ + //查询用户店铺信息 + MassageShop shop = massageShopService + .lambdaQuery() + .eq(MassageShop::getUserId, hanHaiMember.getId()) + .one(); + if(null == shop){ + return Result.error("该用户没有关联店铺信息,核销订单列表查询失败"); + } + + //分页 + page = new Page(pageBean.getPageNo(), pageBean.getPageSize()); + query = massageOrderService + .lambdaQuery(); + //核销店铺id + query.eq(MassageOrder::getShopId, shop.getId()); + //按照创建时间降序排列 + query.orderByDesc(MassageOrder::getCreateTime); + + //获取订单信息 + pageList = query.page(page); + if(null == pageList){ + return Result.OK("核销订单列表为空", pageList); + } + for (MassageOrder record : pageList.getRecords()) { + MassageItem item = massageItemService.getById(record.getItemId()); + record.setMassageItem(item); + } + + return Result.OK("核销订单列表", pageList); + }catch (Exception e){ + e.printStackTrace(); + return Result.error("核销订单列表查询失败"); + } + } + //订单支付回调 public Result payOrderNotify(String requestBody){ WxPayOrderNotifyResult notify = mpWxPayService.notify(requestBody); diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/UserInfoServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/UserInfoServiceImpl.java index 150e3df..974a74c 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/UserInfoServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/UserInfoServiceImpl.java @@ -6,6 +6,8 @@ import org.jeecg.config.shiro.ShiroRealm; import org.jeecg.modules.apiService.UserInfoService; import org.jeecg.modules.hanHaiMember.entity.HanHaiMember; import org.jeecg.modules.hanHaiMember.service.IHanHaiMemberService; +import org.jeecg.modules.massageShop.entity.MassageShop; +import org.jeecg.modules.massageShop.service.IMassageShopService; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -21,6 +23,9 @@ public class UserInfoServiceImpl implements UserInfoService { //用户信息 @Resource private IHanHaiMemberService hanHaiMemberService; + //门店信息 + @Resource + private IMassageShopService massageShopService; /******************************************************************************************************************/ //查询个人信息 @@ -81,6 +86,17 @@ public class UserInfoServiceImpl implements UserInfoService { map.put("score",hanHaiMember.getIntegerPrice());//积分 map.put("balance",hanHaiMember.getPrice());//余额 + //门店信息 + MassageShop shop = massageShopService + .lambdaQuery() + .eq(MassageShop::getUserId, hanHaiMember.getId()) + .one(); + if(null == shop){ + map.put("shop", null); + }else { + map.put("shop", shop); + } + //推广佣金 //优惠券 diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/VipServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/VipServiceImpl.java index 32a85d7..9458d3a 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/VipServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/VipServiceImpl.java @@ -1,22 +1,43 @@ package org.jeecg.modules.apiService.impl; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.jeecg.common.api.vo.Result; +import org.jeecg.config.shiro.ShiroRealm; import org.jeecg.modules.apiBean.PageBean; import org.jeecg.modules.apiService.VipService; +import org.jeecg.modules.apiUtils.CommonUtils; +import org.jeecg.modules.hanHaiMember.entity.HanHaiMember; +import org.jeecg.modules.hanHaiMember.service.IHanHaiMemberService; +import org.jeecg.modules.massageOrder.entity.MassageOrder; import org.jeecg.modules.massageVipCombo.entity.MassageVipCombo; import org.jeecg.modules.massageVipCombo.service.IMassageVipComboService; import org.jeecg.modules.massageVipRecord.entity.MassageVipRecord; import org.jeecg.modules.massageVipRecord.service.IMassageVipRecordService; +import org.jeecg.modules.pay.MpWxPayService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; +@Slf4j @Service public class VipServiceImpl implements VipService { /******************************************************************************************************************/ + //支付接口 + @Autowired + private MpWxPayService mpWxPayService; + //权限验证 + @Resource + private ShiroRealm shiroRealm; + //用户信息 + @Resource + private IHanHaiMemberService hanHaiMemberService; //会员充值套餐信息 @Resource private IMassageVipComboService massageVipComboService; @@ -62,7 +83,67 @@ public class VipServiceImpl implements VipService { //会员中心-开通会员 @Override - public Result addVip(String token, MassageVipRecord vipRecord) { + public Result addVip(String token, String comoId) { + //权限验证 + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + try{ + //查询套餐信息 + MassageVipCombo combo = massageVipComboService.getById(comoId); + + //创建会员开通订单 + MassageVipRecord vipRecord = new MassageVipRecord(); + String recordNo = IdWorker.getIdStr();//生成订单号 + vipRecord.setId(recordNo); + vipRecord.setUserId(hanHaiMember.getId());//关联用户 + vipRecord.setTitle(combo.getTitle()); + vipRecord.setAmount(combo.getPrice()); + massageVipRecordService.save(vipRecord); + + //吊起微信支付 + BigDecimal price = vipRecord.getAmount();//价格 + String productName = vipRecord.getTitle();//服务名称 + + String s = price.multiply(new BigDecimal(100)).toString(); + int i1 = Double.valueOf(s).intValue(); + Object appOrder = mpWxPayService.createOrder2( + "购买"+ productName , + + "127.0.0.1", + vipRecord.getId(), + i1, + vipRecord.getId(), + hanHaiMember.getAppletOpenid(), + vipRecord.toString()); + return Result.OK("支付成功",appOrder); + }catch (Exception e){ + e.printStackTrace(); + return Result.error("支付失败"); + } + } + + //订单支付回调 + public Result addVipNotify(String requestBody){ + WxPayOrderNotifyResult notify = mpWxPayService.notify(requestBody); + String outTradeNo = notify.getOutTradeNo(); + log.info("支付回调订单号码:"+outTradeNo); + + try{ + //添加支付记录 + //查询订单信息 + MassageVipRecord record = massageVipRecordService.getById(outTradeNo); + //如果订单存在则修改订单状态 + if (null != record){ + if("0".equals(record.getStatus())){ + record.setStatus("1");//订单状态 + record.setPayTime(CommonUtils.getCurrentTime());//订单支付时间 + massageVipRecordService.updateById(record); + } + } + + }catch (Exception e){ + log.info("支付回调失败,订单号码:"+outTradeNo); + e.printStackTrace(); + } return null; } } diff --git a/jeecg-boot-module-system/src/main/resources/application-dev.yml b/jeecg-boot-module-system/src/main/resources/application-dev.yml index 50a22a8..19a19c8 100644 --- a/jeecg-boot-module-system/src/main/resources/application-dev.yml +++ b/jeecg-boot-module-system/src/main/resources/application-dev.yml @@ -134,7 +134,7 @@ spring: # connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 datasource: master: - url: jdbc:mysql://124.223.100.7:3306/massage?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false + url: jdbc:mysql://43.139.205.54:3306/massage?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false username: root password: Abc.123456 driver-class-name: com.mysql.cj.jdbc.Driver @@ -147,7 +147,7 @@ spring: #redis 配置 redis: database: 0 - host: 124.223.100.7 + host: 43.139.205.54 lettuce: pool: max-active: -1 #最大连接数据库连接数,设 -1 为没有限制