diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/BsSettlementController.java b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/BsSettlementController.java new file mode 100644 index 00000000..ef749192 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/BsSettlementController.java @@ -0,0 +1,114 @@ +package com.ruoyi.system.controller; + +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.system.domain.BsSettlement; +import com.ruoyi.system.service.IBsSettlementService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 结算记录Controller + * + * @author ruoyi + * @date 2024-11-20 + */ +@RestController +@RequestMapping("/system/settlement") +public class BsSettlementController extends BaseController +{ + @Autowired + private IBsSettlementService bsSettlementService; + + /** + * 查询结算记录列表 + */ + @PreAuthorize("@ss.hasPermi('system:settlement:list')") + @GetMapping("/list") + public TableDataInfo list(BsSettlement bsSettlement) + { + startPage(); + List list = bsSettlementService.selectBsSettlementList(bsSettlement); + return getDataTable(list); + } + + /** + * 导出结算记录列表 + */ + @PreAuthorize("@ss.hasPermi('system:settlement:export')") + @Log(title = "结算记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, BsSettlement bsSettlement) + { + List list = bsSettlementService.selectBsSettlementList(bsSettlement); + ExcelUtil util = new ExcelUtil(BsSettlement.class); + util.exportExcel(response, list, "结算记录数据"); + } + + /** + * 获取结算记录详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:settlement:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(bsSettlementService.selectBsSettlementById(id)); + } + + /** + * 新增结算记录 + */ + @PreAuthorize("@ss.hasPermi('system:settlement:add')") + @Log(title = "结算记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody BsSettlement bsSettlement) + { + return toAjax(bsSettlementService.insertBsSettlement(bsSettlement)); + } + + /** + * 修改结算记录 + */ + @PreAuthorize("@ss.hasPermi('system:settlement:edit')") + @Log(title = "结算记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody BsSettlement bsSettlement) + { + return toAjax(bsSettlementService.updateBsSettlement(bsSettlement)); + } + + /** + * 删除结算记录 + */ + @PreAuthorize("@ss.hasPermi('system:settlement:remove')") + @Log(title = "结算记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(bsSettlementService.deleteBsSettlementByIds(ids)); + } + + /** + * 根据结算id查询订单id并且查询出订单信息 + */ + @GetMapping("/getOrderForIds/{id}") + public AjaxResult getOrderForIds(@PathVariable String id) { + String ids = bsSettlementService.selectSettlementByNo(id); + String[] idStrings = ids.split(","); + Long[] orderIds = new Long[idStrings.length]; + + for (int i = 0; i < idStrings.length; i++) { + orderIds[i] = Long.parseLong(idStrings[i]); + } + + return success(bsSettlementService.getOrderForIds(orderIds)); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/BsOrder.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/BsOrder.java index bf88cb54..9d752ec1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/BsOrder.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/BsOrder.java @@ -97,6 +97,18 @@ public class BsOrder extends BaseEntity { @Excel(name = "分销商id") private int distributor; + /** + * 结算状态 + */ + @Excel(name = "结算状态") + private int settlementStatus; + + /** + * 结算单号 + */ + @Excel(name = "结算单号") + private String settlementNo; + public void setId(Long id) { this.id = id; } @@ -203,6 +215,22 @@ public class BsOrder extends BaseEntity { this.distributor = distributor; } + public int getSettlementStatus() { + return settlementStatus; + } + + public void setSettlementStatus(int settlementStatus) { + this.settlementStatus = settlementStatus; + } + + public String getSettlementNo() { + return settlementNo; + } + + public void setSettlementNo(String settlementNo) { + this.settlementNo = settlementNo; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) @@ -219,6 +247,8 @@ public class BsOrder extends BaseEntity { .append("openid", getOpenid()) .append("transactionId", getTransactionId()) .append("distributor", getDistributor()) + .append("distributor", getSettlementStatus()) + .append("distributor", getSettlementNo()) .toString(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/BsSettlement.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/BsSettlement.java new file mode 100644 index 00000000..4810a1cf --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/BsSettlement.java @@ -0,0 +1,99 @@ +package com.ruoyi.system.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 结算记录对象 bs_settlement + * + * @author ruoyi + * @date 2024-11-20 + */ +public class BsSettlement extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键(结算单号) */ + private String id; + + /** 凭证 */ + @Excel(name = "凭证") + private String image; + + /** 结算金额 */ + @Excel(name = "结算金额") + private BigDecimal sum; + + /** 订单id */ + @Excel(name = "订单id") + private String orderIds; + + /** 结算时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "结算时间", width = 50, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date time; + + public void setId(String id) + { + this.id = id; + } + + public String getId() + { + return id; + } + public void setImage(String image) + { + this.image = image; + } + + public String getImage() + { + return image; + } + public void setSum(BigDecimal sum) + { + this.sum = sum; + } + + public BigDecimal getSum() + { + return sum; + } + + public Date getTime() { + return time; + } + + public void setTime(Date time) { + this.time = time; + } + + public void setOrderIds(String orderIds) + { + this.orderIds = orderIds; + } + + public String getOrderIds() + { + return orderIds; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("remark", getRemark()) + .append("image", getImage()) + .append("sum", getSum()) + .append("time", getTime()) + .append("orderIds", getOrderIds()) + .toString(); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/dto/BsOrderDTO.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/dto/BsOrderDTO.java index c4071dcb..1c02fd95 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/dto/BsOrderDTO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/dto/BsOrderDTO.java @@ -24,4 +24,14 @@ public class BsOrderDTO extends BsOrder { * 分销商distributionId */ private Long distributionId; + + /** + * 分销商提成 + */ + private int distributionCommission; + + /** + * 分销商来源 + */ + private String distributionSource; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/vo/BsOrdersVO.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/vo/BsOrdersVO.java index 02aee320..11750c17 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/vo/BsOrdersVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/vo/BsOrdersVO.java @@ -24,4 +24,14 @@ public class BsOrdersVO extends BsOrder { * 分销商distributionId */ private Long distributionId; + + /** + * 分销商提成 + */ + private int distributionCommission; + + /** + * 分销商来源 + */ + private String distributionSource; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BsOrderMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BsOrderMapper.java index fc66b0a1..dd7b7947 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BsOrderMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BsOrderMapper.java @@ -4,6 +4,7 @@ import java.util.List; import com.ruoyi.system.domain.BsOrder; import com.ruoyi.system.domain.dto.BsOrderDTO; import com.ruoyi.system.domain.vo.BsOrdersVO; +import org.apache.ibatis.annotations.Param; /** * 订单Mapper接口 @@ -94,4 +95,14 @@ public interface BsOrderMapper * 分销商查询订单 */ public List distributionGetOrder(int distributorId); + + /** + * 批量修改订单信息 + * + * @param ids + * @return 结果 + */ + public int upOrderSettlementStatus(@Param("array") Long[] ids, @Param("settlementNo") String settlementNo); + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BsSettlementMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BsSettlementMapper.java new file mode 100644 index 00000000..60acbac1 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BsSettlementMapper.java @@ -0,0 +1,74 @@ +package com.ruoyi.system.mapper; + +import com.ruoyi.system.domain.BsSettlement; +import com.ruoyi.system.domain.vo.BsOrdersVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 结算记录Mapper接口 + * + * @author ruoyi + * @date 2024-11-20 + */ +public interface BsSettlementMapper +{ + /** + * 查询结算记录 + * + * @param id 结算记录主键 + * @return 结算记录 + */ + public BsSettlement selectBsSettlementById(String id); + + /** + * 查询结算记录列表 + * + * @param bsSettlement 结算记录 + * @return 结算记录集合 + */ + public List selectBsSettlementList(BsSettlement bsSettlement); + + /** + * 新增结算记录 + * + * @param bsSettlement 结算记录 + * @return 结果 + */ + public int insertBsSettlement(BsSettlement bsSettlement); + + /** + * 修改结算记录 + * + * @param bsSettlement 结算记录 + * @return 结果 + */ + public int updateBsSettlement(BsSettlement bsSettlement); + + /** + * 删除结算记录 + * + * @param id 结算记录主键 + * @return 结果 + */ + public int deleteBsSettlementById(String id); + + /** + * 批量删除结算记录 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteBsSettlementByIds(String[] ids); + + /** + * 根据结算id查询订单id + */ + public String selectSettlementByNo(String id); + + /** + * 根据订单id查询订单信息 + */ + public List getOrderForIds(@Param("ids") Long[] ids); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBsOrderService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBsOrderService.java index cd86a795..c01c9dd3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBsOrderService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBsOrderService.java @@ -94,4 +94,12 @@ public interface IBsOrderService * 分销商查询订单 */ public List distributionGetOrder(int distributorId); + + /** + * 批量修改订单信息 + * + * @param ids 需要修改的数据主键集合 + * @return 结果 + */ + public int upOrderSettlementStatus(Long[] ids,String settlementNo); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBsSettlementService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBsSettlementService.java new file mode 100644 index 00000000..558f80b5 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBsSettlementService.java @@ -0,0 +1,74 @@ +package com.ruoyi.system.service; + +import com.ruoyi.system.domain.BsSettlement; +import com.ruoyi.system.domain.vo.BsOrdersVO; + +import java.util.List; + +/** + * 结算记录Service接口 + * + * @author ruoyi + * @date 2024-11-20 + */ +public interface IBsSettlementService +{ + /** + * 查询结算记录 + * + * @param id 结算记录主键 + * @return 结算记录 + */ + public BsSettlement selectBsSettlementById(String id); + + /** + * 查询结算记录列表 + * + * @param bsSettlement 结算记录 + * @return 结算记录集合 + */ + public List selectBsSettlementList(BsSettlement bsSettlement); + + /** + * 新增结算记录 + * + * @param bsSettlement 结算记录 + * @return 结果 + */ + public int insertBsSettlement(BsSettlement bsSettlement); + + /** + * 修改结算记录 + * + * @param bsSettlement 结算记录 + * @return 结果 + */ + public int updateBsSettlement(BsSettlement bsSettlement); + + /** + * 批量删除结算记录 + * + * @param ids 需要删除的结算记录主键集合 + * @return 结果 + */ + public int deleteBsSettlementByIds(String[] ids); + + /** + * 删除结算记录信息 + * + * @param id 结算记录主键 + * @return 结果 + */ + public int deleteBsSettlementById(String id); + + /** + * 根据结算id查询订单id + */ + public String selectSettlementByNo(String id); + + /** + * 根据订单id查询订单信息 + */ + public List getOrderForIds(Long[] ids); + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BsOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BsOrderServiceImpl.java index e22105a7..a3869c35 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BsOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BsOrderServiceImpl.java @@ -146,4 +146,12 @@ public class BsOrderServiceImpl implements IBsOrderService public List distributionGetOrder(int distributorId) { return bsOrderMapper.distributionGetOrder(distributorId); } + + /** + * 修改订单结算状态 + */ + @Override + public int upOrderSettlementStatus(Long[] ids, String settlementNo) { + return bsOrderMapper.upOrderSettlementStatus(ids, settlementNo); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BsSettlementServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BsSettlementServiceImpl.java new file mode 100644 index 00000000..79376b12 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BsSettlementServiceImpl.java @@ -0,0 +1,131 @@ +package com.ruoyi.system.service.impl; + +import com.ruoyi.common.utils.uuid.IdUtils; +import com.ruoyi.system.domain.BsSettlement; +import com.ruoyi.system.domain.vo.BsOrdersVO; +import com.ruoyi.system.mapper.BsOrderMapper; +import com.ruoyi.system.mapper.BsSettlementMapper; +import com.ruoyi.system.service.IBsSettlementService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 结算记录Service业务层处理 + * + * @author ruoyi + * @date 2024-11-20 + */ +@Service +public class BsSettlementServiceImpl implements IBsSettlementService +{ + @Autowired + private BsSettlementMapper bsSettlementMapper; + + @Autowired + private BsOrderMapper bsOrderMapper; + + /** + * 查询结算记录 + * + * @param id 结算记录主键 + * @return 结算记录 + */ + @Override + public BsSettlement selectBsSettlementById(String id) + { + return bsSettlementMapper.selectBsSettlementById(id); + } + + /** + * 查询结算记录列表 + * + * @param bsSettlement 结算记录 + * @return 结算记录 + */ + @Override + public List selectBsSettlementList(BsSettlement bsSettlement) + { + return bsSettlementMapper.selectBsSettlementList(bsSettlement); + } + + /** + * 新增结算记录 + * + * @param bsSettlement 结算记录 + * @return 结果 + */ + @Override + public int insertBsSettlement(BsSettlement bsSettlement) + { + String no = IdUtils.fastSimpleUUID(); + bsSettlement.setId(no); + int num = bsSettlementMapper.insertBsSettlement(bsSettlement); + if(num != 0){ + String orderId = bsSettlement.getOrderIds(); + String[] idStrings = orderId.split(","); + Long[] ids = new Long[idStrings.length]; + + for (int i = 0; i < idStrings.length; i++) { + ids[i] = Long.parseLong(idStrings[i]); + } + bsOrderMapper.upOrderSettlementStatus(ids,no); + } + + return num; + } + + /** + * 修改结算记录 + * + * @param bsSettlement 结算记录 + * @return 结果 + */ + @Override + public int updateBsSettlement(BsSettlement bsSettlement) + { + return bsSettlementMapper.updateBsSettlement(bsSettlement); + } + + /** + * 批量删除结算记录 + * + * @param ids 需要删除的结算记录主键 + * @return 结果 + */ + @Override + public int deleteBsSettlementByIds(String[] ids) + { + return bsSettlementMapper.deleteBsSettlementByIds(ids); + } + + /** + * 删除结算记录信息 + * + * @param id 结算记录主键 + * @return 结果 + */ + @Override + public int deleteBsSettlementById(String id) + { + return bsSettlementMapper.deleteBsSettlementById(id); + } + + /** + * 根据结算id查询订单id + */ + @Override + public String selectSettlementByNo(String id) { + + return bsSettlementMapper.selectSettlementByNo(id); + } + + /** + * 根据订单id查询订单信息 + */ + @Override + public List getOrderForIds(Long[] ids) { + return bsSettlementMapper.getOrderForIds(ids); + } +} diff --git a/ruoyi-admin/src/main/resources/mapper/system/BsOrderMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/BsOrderMapper.xml index 1ddf1758..ff606d2d 100644 --- a/ruoyi-admin/src/main/resources/mapper/system/BsOrderMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/system/BsOrderMapper.xml @@ -18,6 +18,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -37,6 +39,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + @@ -53,7 +59,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" create_time, payStatus, openid, - distributor + distributor, + settlement_status, + settlement_no from bs_order @@ -98,6 +108,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" payStatus, openid, distributor, + settlement_status, + settlement_no, #{orderNo}, @@ -112,6 +124,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{payStatus}, #{openid}, #{distributor}, + #{settlementStatus}, + #{settlementNo}, @@ -159,43 +173,58 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + update bs_order set settlement_status = 1,settlement_no = #{settlementNo} where id in + + #{id} + + diff --git a/ruoyi-admin/src/main/resources/mapper/system/BsSettlementMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/BsSettlementMapper.xml new file mode 100644 index 00000000..684e8d97 --- /dev/null +++ b/ruoyi-admin/src/main/resources/mapper/system/BsSettlementMapper.xml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + select id, remark, image, sum, time, order_ids + from bs_settlement + + + + + + + + insert into bs_settlement + + id, + remark, + image, + sum, + time, + order_ids, + + + #{id}, + #{remark}, + #{image}, + #{sum}, + #{time}, + #{orderIds}, + + + + + update bs_settlement + + remark = #{remark}, + image = #{image}, + sum = #{sum}, + sum = #{time}, + + where id = #{id} + + + + delete + from bs_settlement + where id = #{id} + + + + delete from bs_settlement where id in + + #{id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-ui/src/api/system/settlement.js b/ruoyi-ui/src/api/system/settlement.js new file mode 100644 index 00000000..a8ee29b7 --- /dev/null +++ b/ruoyi-ui/src/api/system/settlement.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询结算记录列表 +export function listSettlement(query) { + return request({ + url: '/system/settlement/list', + method: 'get', + params: query + }) +} + +// 查询结算记录详细 +export function getSettlement(id) { + return request({ + url: '/system/settlement/' + id, + method: 'get' + }) +} + +// 查询结算记录详细2 +export function getOrderForIds(id) { + return request({ + url: '/system/settlement/getOrderForIds/' + id, + method: 'get' + }) +} + +// 新增结算记录 +export function addSettlement(data) { + return request({ + url: '/system/settlement', + method: 'post', + data: data + }) +} + +// 修改结算记录 +export function updateSettlement(data) { + return request({ + url: '/system/settlement', + method: 'put', + data: data + }) +} + +// 删除结算记录 +export function delSettlement(id) { + return request({ + url: '/system/settlement/' + id, + method: 'delete' + }) +} diff --git a/ruoyi-ui/src/views/system/order/index.vue b/ruoyi-ui/src/views/system/order/index.vue index a01729be..5bc09ee6 100644 --- a/ruoyi-ui/src/views/system/order/index.vue +++ b/ruoyi-ui/src/views/system/order/index.vue @@ -1,6 +1,6 @@ + diff --git a/ruoyi-ui/src/views/system/settlement/index.vue b/ruoyi-ui/src/views/system/settlement/index.vue new file mode 100644 index 00000000..4dfdc827 --- /dev/null +++ b/ruoyi-ui/src/views/system/settlement/index.vue @@ -0,0 +1,363 @@ + + + diff --git a/ruoyi-ui/src/views/system/userFront/payBefore.vue b/ruoyi-ui/src/views/system/userFront/payBefore.vue index 29cd7377..c4a14232 100644 --- a/ruoyi-ui/src/views/system/userFront/payBefore.vue +++ b/ruoyi-ui/src/views/system/userFront/payBefore.vue @@ -95,6 +95,7 @@ export default { }, getOrderNo(){ this.form.payStatus = 2 + this.form.settlementStatus = 2 this.form.price = this.goods.price this.form.goodsName = this.goods.name this.form.goodsmin = this.goods.id