You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

220 lines
10 KiB

2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
  1. package com.example.demo.serviceImpl.cash;
  2. import com.example.demo.Util.GoldTistV2;
  3. import com.example.demo.domain.entity.User;
  4. import com.example.demo.domain.entity.UserGoldRecord;
  5. import com.example.demo.domain.vo.cash.CashRecordDone;
  6. import com.example.demo.domain.vo.coin.Result;
  7. import com.example.demo.mapper.cash.CashRefundMapper;
  8. import com.example.demo.mapper.coin.AuditMapper;
  9. import com.example.demo.mapper.coin.MarketMapper;
  10. import com.example.demo.mapper.coin.RefundMapper;
  11. import com.example.demo.service.cash.RefundService;
  12. import com.github.pagehelper.PageHelper;
  13. import com.github.pagehelper.PageInfo;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import java.math.BigDecimal;
  17. import java.time.LocalDate;
  18. import java.util.List;
  19. import java.util.UUID;
  20. import static org.apache.commons.lang3.StringUtils.substring;
  21. /**
  22. * @program: GOLD
  23. * @ClassName CashRefundServiceImpl
  24. * @description:
  25. * @author: huangqizhen
  26. * @create: 202509-28 15:02
  27. * @Version 1.0
  28. **/
  29. @Service
  30. public class CashRefundServiceImpl implements RefundService {
  31. @Autowired
  32. private CashRefundMapper cashRefundMapper;
  33. @Autowired
  34. private RefundMapper refundMapper;
  35. @Autowired
  36. private AuditMapper auditMapper;
  37. @Autowired
  38. private MarketMapper marketMapper;
  39. @Override
  40. public PageInfo<CashRecordDone> select(Integer pageNum, Integer pageSize, CashRecordDone cashRecordDone) {
  41. PageHelper.startPage(pageNum, pageSize);
  42. // System.out.println(goldDetail.getMarkets());
  43. List<CashRecordDone> list = cashRefundMapper.select(cashRecordDone);
  44. return new PageInfo<>(list);
  45. }
  46. @Override
  47. public int add(CashRecordDone cashRecordDone) throws Exception {
  48. if(cashRecordDone.getHandlingCharge()== null){
  49. throw new Exception("未输入手续费") ;
  50. }
  51. if(cashRecordDone.getJwcode()==null){
  52. throw new Exception("未输入精网号") ;
  53. }
  54. if(cashRecordDone.getPaymentAmount()== null){
  55. throw new Exception("未输入付款金额") ;
  56. }
  57. if(cashRecordDone.getPaymentCurrency()== null){
  58. throw new Exception("未输入付款币种") ;
  59. }
  60. if(cashRecordDone.getRefundModel()== null){
  61. throw new Exception("请填充退款类型") ;
  62. }
  63. if(cashRecordDone.getRefundReason()== null){
  64. throw new Exception("请填写退款理由") ;
  65. }
  66. CashRecordDone cashRecordDonetwo = new CashRecordDone();
  67. cashRecordDonetwo.setAreaServise(cashRecordDone.getAreaServise());
  68. cashRefundMapper.addAudit(cashRecordDonetwo);
  69. cashRecordDone.setAuditId(cashRecordDonetwo.getId());
  70. cashRecordDone.setOrderType(2);
  71. cashRecordDone.setStatus(10);
  72. //生成订单号后半部分
  73. String orderNumber = cashRecordDone.getOrderCode();
  74. //构建订单信息
  75. cashRecordDone.setOrderCode("TK" + orderNumber); //订单号
  76. cashRecordDone.setMarket(marketMapper.getMarketId(cashRecordDone.getMarket()));
  77. cashRecordDone.setReceivedMarket(marketMapper.getMarketId(cashRecordDone.getReceivedMarket()));
  78. cashRefundMapper.insert(cashRecordDone);
  79. CashRecordDone cashRecordDone1 = new CashRecordDone();
  80. cashRecordDone1.setId(cashRecordDone.getId());
  81. cashRecordDone1.setStatus(6);
  82. if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null)
  83. return cashRefundMapper.updateStatus(cashRecordDone1);
  84. else return Result.error("提交失败").getCode();
  85. }
  86. @Override
  87. public int update(CashRecordDone cashRecordDone) throws Exception {
  88. if (cashRecordDone.getJwcode()== null) {
  89. throw new RuntimeException("未输入精网号");
  90. }
  91. if (cashRecordDone.getPaymentAmount()== null) {
  92. throw new RuntimeException("未输入付款金额");
  93. }
  94. if (cashRecordDone.getPaymentCurrency()== null){
  95. throw new RuntimeException("未输入付款币种");
  96. }
  97. if (cashRecordDone.getRefundModel()== null) {
  98. throw new RuntimeException("请填写退款类型");
  99. }
  100. if (cashRecordDone.getRefundReason()== null) {
  101. throw new RuntimeException("请填写退款理由");
  102. }
  103. int result = cashRefundMapper.update(cashRecordDone);
  104. return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
  105. }
  106. @Override
  107. public int withdraw(CashRecordDone cashRecordDone) {
  108. return cashRefundMapper.withdraw(cashRecordDone.getId());
  109. }
  110. @Override
  111. public int review(CashRecordDone cashRecordDone) throws Exception {
  112. if(cashRecordDone.getStatus()== 12|| cashRecordDone.getStatus()== 22){
  113. if(cashRecordDone.getOrderCode()== null){
  114. throw new RuntimeException("未输入订单号");
  115. }
  116. CashRecordDone cashRecordDone1 = new CashRecordDone();
  117. cashRecordDone1.setOrderCode(cashRecordDone.getOrderCode().substring(2));
  118. cashRecordDone1.setStatus(4);
  119. if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null){
  120. cashRefundMapper.updateStatus(cashRecordDone1);
  121. }}
  122. cashRefundMapper.updateAudit(cashRecordDone);
  123. int result = cashRefundMapper.review(cashRecordDone);
  124. return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
  125. }
  126. @Override
  127. public int executor(CashRecordDone cashRecordDone) throws Exception {
  128. if(cashRecordDone.getRefundVoucher()== null){
  129. throw new RuntimeException("未输入退款凭证");
  130. }
  131. if(cashRecordDone.getRefundTime()== null){
  132. throw new RuntimeException("未输入退款时间");
  133. }
  134. if(cashRecordDone.getRefundRemark()== null){
  135. throw new RuntimeException("未输入退款备注");
  136. }
  137. if(cashRecordDone.getRefundChannels()== null){
  138. throw new RuntimeException("未输入退款途径");
  139. }
  140. if(cashRecordDone.getRefundCurrency()== null){
  141. throw new RuntimeException("未输入退款币种");
  142. }
  143. if(cashRecordDone.getRefundAmount()== null){
  144. throw new RuntimeException("未输入退款金额");
  145. }
  146. int result = cashRefundMapper.executor(cashRecordDone);
  147. return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
  148. }
  149. @Override
  150. public int updateStatus(CashRecordDone cashRecordDone) {
  151. return cashRefundMapper.updateStatus(cashRecordDone);
  152. }
  153. @Override
  154. public int finalreview(CashRecordDone cashRecordDone) {
  155. if(cashRecordDone.getStatus()== 32){
  156. CashRecordDone cashRecordDone1 = new CashRecordDone();
  157. cashRecordDone1.setOrderCode(cashRecordDone.getOrderCode().substring(2));
  158. cashRecordDone1.setStatus(4);
  159. if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null){
  160. cashRefundMapper.updateStatus(cashRecordDone1);
  161. }}
  162. if (cashRecordDone.getGoodsName() != null &&cashRecordDone.getStatus() ==40 &&
  163. (cashRecordDone.getGoodsName().equals("金币充值") ||
  164. cashRecordDone.getGoodsName().contains("金币充值"))) {
  165. UserGoldRecord userGoldRecord = new UserGoldRecord();
  166. userGoldRecord.setOrderCode(cashRecordDone.getOrderCode());
  167. userGoldRecord.setType((byte) 2);
  168. userGoldRecord.setIsRefund((byte) 1);
  169. userGoldRecord.setRefundType("金币退款");
  170. userGoldRecord.setCrefundModel(cashRecordDone.getRefundModel());
  171. userGoldRecord.setJwcode(cashRecordDone.getJwcode());
  172. userGoldRecord.setSumGold(cashRecordDone.getPermanentGold()+cashRecordDone.getFreeGold());
  173. userGoldRecord.setPermanentGold(cashRecordDone.getPermanentGold());
  174. int currentMonth = LocalDate.now().getMonthValue();
  175. if (currentMonth >= 1 && currentMonth <= 6) {
  176. // 1-6月:设置12月额度,6月保持默认值
  177. userGoldRecord.setFreeJune(0);
  178. userGoldRecord.setFreeDecember(cashRecordDone.getFreeGold());
  179. } else {
  180. // 7-12月:设置6月额度,12月保持默认值
  181. userGoldRecord.setFreeJune(cashRecordDone.getFreeGold());
  182. userGoldRecord.setFreeDecember(0);
  183. }
  184. userGoldRecord.setGoodsName(cashRecordDone.getGoodsName());
  185. userGoldRecord.setPayPlatform("金币系统");
  186. userGoldRecord.setRemark(cashRecordDone.getRemark());
  187. userGoldRecord.setAdminId(cashRecordDone.getAuditId());
  188. userGoldRecord.setAuditStatus(1);
  189. userGoldRecord.setTaskGold(0);
  190. String auditName = auditMapper.getName(cashRecordDone.getAuditId());
  191. refundMapper.add(userGoldRecord);
  192. User user = new User();
  193. user.setJwcode(userGoldRecord.getJwcode());
  194. user.setCurrentPermanentGold(BigDecimal.valueOf(userGoldRecord.getPermanentGold())); //当前永久金币
  195. user.setCurrentFreeJune(BigDecimal.valueOf(userGoldRecord.getFreeJune())); //当前六月免费金币
  196. user.setCurrentFreeDecember(BigDecimal.valueOf(userGoldRecord.getFreeDecember())); //当前十二月免费金币
  197. auditMapper.updateUserGold(user);
  198. GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 58, //退款免费+永久金币-充值
  199. (double) (userGoldRecord.getFreeDecember()+userGoldRecord.getFreeJune()+userGoldRecord.getPermanentGold() ) /100,
  200. userGoldRecord.getRemark(),(double) userGoldRecord.getPermanentGold() / 100, auditName, "退款金币充值");}
  201. cashRefundMapper.updateAudit(cashRecordDone);
  202. int result = cashRefundMapper.review(cashRecordDone);
  203. return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
  204. }
  205. }