package com.example.demo.serviceImpl; import com.example.demo.Util.BaseDES; import com.example.demo.domain.entity.DetailY; import com.example.demo.domain.entity.Recharge; import com.example.demo.domain.entity.UserGold; import com.example.demo.domain.vo.ERP; import com.example.demo.mapper.db1.DetailYMapper; import com.example.demo.mapper.db1.OtherMapper; import com.example.demo.mapper.db1.RechargeMapper; import com.example.demo.mapper.db1.UserMapper; import com.example.demo.sevice.OtherService; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.http.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.math.BigDecimal; import java.time.LocalDate; import java.time.Month; import java.util.HashMap; import java.util.Set; import java.util.HashSet; import java.util.Map; @Service @Transactional @RequiredArgsConstructor @CacheConfig(cacheNames = "other") public class OtherServiceImpl implements OtherService { private static final Logger log = LoggerFactory.getLogger(OtherServiceImpl.class); @Autowired private RestTemplate restTemplate; private static final Set typesToUpdateZero = new HashSet<>(); private static final Set typesToUpdateOne = new HashSet<>(); private static final Set typesToUpdateTwo = new HashSet<>(); private static final Set typesToUpdateThree = new HashSet<>(); private static final Set typesToUpdateFour = new HashSet<>(); private static final Set typesToUpdateFive = new HashSet<>(); private final OtherMapper otherMapper; private final DetailYMapper detailYMapper; private final UserMapper userMapper; private final RechargeMapper rechargeMapper; static { typesToUpdateZero.add("1"); typesToUpdateZero.add("2"); typesToUpdateZero.add("3"); typesToUpdateZero.add("4"); typesToUpdateZero.add("5"); typesToUpdateZero.add("6"); typesToUpdateZero.add("7"); typesToUpdateZero.add("8"); typesToUpdateZero.add("11"); typesToUpdateZero.add("12"); typesToUpdateZero.add("13"); typesToUpdateZero.add("14"); typesToUpdateZero.add("18"); typesToUpdateZero.add("19"); typesToUpdateZero.add("20"); typesToUpdateZero.add("21"); typesToUpdateZero.add("22"); typesToUpdateZero.add("23"); typesToUpdateZero.add("24"); typesToUpdateZero.add("26"); typesToUpdateZero.add("28"); typesToUpdateZero.add("29"); typesToUpdateZero.add("35"); typesToUpdateZero.add("36"); typesToUpdateZero.add("40"); typesToUpdateZero.add("45"); typesToUpdateZero.add("46"); typesToUpdateZero.add("47"); typesToUpdateZero.add("48"); typesToUpdateZero.add("49"); typesToUpdateZero.add("53"); typesToUpdateZero.add("54"); typesToUpdateZero.add("60"); // typesToUpdateZero.add("64"); // typesToUpdateZero.add("63"); typesToUpdateOne.add("9"); typesToUpdateOne.add("15"); typesToUpdateOne.add("17"); typesToUpdateOne.add("25"); typesToUpdateOne.add("27"); typesToUpdateOne.add("37"); typesToUpdateOne.add("41"); typesToUpdateOne.add("42"); typesToUpdateOne.add("43"); typesToUpdateOne.add("50"); typesToUpdateOne.add("51"); typesToUpdateOne.add("52"); typesToUpdateOne.add("62"); typesToUpdateTwo.add("55"); typesToUpdateTwo.add("56"); typesToUpdateTwo.add("57"); typesToUpdateTwo.add("58"); typesToUpdateTwo.add("59"); typesToUpdateTwo.add("61"); typesToUpdateThree.add("10"); typesToUpdateThree.add("16"); typesToUpdateThree.add("30"); typesToUpdateThree.add("31"); typesToUpdateThree.add("32"); typesToUpdateThree.add("33"); typesToUpdateThree.add("34"); typesToUpdateThree.add("39"); typesToUpdateThree.add("44"); typesToUpdateFour.add("65"); typesToUpdateFive.add("63"); typesToUpdateFive.add("64"); } @Override public int addERP(ERP erp) throws Exception { DetailY detailY = new DetailY(); Recharge recharge = new Recharge(); String type = erp.getType(); String JwCode = erp.getJwcode(); BigDecimal taskJb = erp.getTaskJb(); BigDecimal freeJb = erp.getFreeJb(); BigDecimal rechargeJb = erp.getRechargeJb(); String uid = erp.getTable().getUid(); BigDecimal goldLast = erp.getTable().getGold_last(); String adminName = erp.getTable().getCz_user(); if(adminName==null||adminName.equals("")){ adminName = erp.getTable().getCz_bz(); } Integer platform = erp.getTable().getOperation_platform(); String productName = erp.getProductName(); String remark = erp.getReamrk(); String Way = otherMapper.selectWay(type); String country = null; String name = null; UserGold userGold = new UserGold(); userGold = userMapper.selectGold(JwCode); //新加判断位置 //判断usergold有没有查到数据 BaseDES des = new BaseDES(); String desjwcode= des.encrypt(JwCode); System.out.println("desjwcode:"+desjwcode); // 创建 JSON 请求体 Map requestBody = new HashMap<>(); requestBody.put("jwcode", desjwcode); // 设置请求头 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); // 创建 HttpEntity HttpEntity> entity = new HttpEntity<>(requestBody, headers); // 发送 POST 请求 try { ResponseEntity response = restTemplate.exchange( "http://hwapi.rzfwq.com/hwjnApp/hwhc-login/hwhclogin/hc/login/clent/info", HttpMethod.POST, entity, Map.class); // 检查响应状态码 if (response.getStatusCode().is2xxSuccessful()) { Map responseBody = response.getBody(); if (responseBody != null) { // 获取data部分 Map data = (Map) responseBody.get("data"); if (data != null) { // 提取name和country name = (String) data.get("name"); country = (String) data.get("country"); // 打印获取到的数据 System.out.println("Name: " + name); System.out.println("Country: " + country); } else { System.out.println("Data is null"); } } else { System.out.println("Response body is null"); } } else { System.out.println("Request failed with status code: " + response.getStatusCode()); } } catch (Exception e) { System.out.println("Error: " + e.getMessage()); // 设置默认的 country 值 country = "Unknown"; } if(userGold==null){ userGold = new UserGold(); userGold.setBuyJb(BigDecimal.ZERO); userGold.setCoreJb(BigDecimal.ZERO); userGold.setFree6(BigDecimal.ZERO); userGold.setFree12(BigDecimal.ZERO); userGold.setJwcode(JwCode); userMapper.addUserGold(userGold); } if (typesToUpdateFour.contains(type)) { log.info("类型为 金币系统操作,不写入数据"); return 0; // 返回默认值 } if (typesToUpdateFive.contains(type)) { System.out.println("金币充值------------------------------------------------------"); detailY.setUpdateType(0);// 设置 updateType 为 0 detailY.setJwcode(JwCode); detailY.setRechargeCoin(rechargeJb); detailY.setFreeCoin(freeJb); detailY.setTaskCoin(taskJb); detailY.setRemark(remark); detailY.setName(adminName); detailY.setGtype(Integer.valueOf(type)); // detailY.setUsername(username); // detailY.setArea(area); detailY.setProductName(productName); detailY.setConsumePlatform(String.valueOf(platform)); detailY.setRechargeWay(Way); detailY.setArea(country); detailY.setCreateTime(erp.getCreateTime()); detailY.setGold_last(goldLast); detailY.setUid(uid); detailY.setUsername(name); BigDecimal buyJb = userGold.getBuyJb(); BigDecimal coreJb = userGold.getCoreJb(); buyJb = buyJb.add(rechargeJb); coreJb = coreJb.add(taskJb); // 设置更新后的Sumgold回到user对象 userGold.setBuyJb(buyJb); userGold.setCoreJb(coreJb); LocalDate now = LocalDate.now(); // 判断当前日期是在六月之前还是之后 Month currentMonth = now.getMonth(); boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue(); boolean isJune = currentMonth.getValue() == Month.JUNE.getValue(); boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue(); // 根据月份更新 free6 或 free12 if (isBeforeJune || isJune) { // 如果是六月前,更新 free6 BigDecimal free6 = userGold.getFree6().add(freeJb); userGold.setFree6(free6); } else if (isAfterJune) { // 如果是六月后,更新 free12 BigDecimal free12 = userGold.getFree12().add(freeJb); userGold.setFree12(free12); } } if (typesToUpdateZero.contains(type)) { System.out.println("充值------------------------------------------------------"); detailY.setUpdateType(0);// 设置 updateType 为 0 detailY.setJwcode(JwCode); detailY.setRechargeCoin(rechargeJb); detailY.setFreeCoin(freeJb); detailY.setTaskCoin(taskJb); detailY.setRemark(remark); detailY.setName(adminName); detailY.setGtype(Integer.valueOf(type)); // detailY.setUsername(username); // detailY.setArea(area); detailY.setProductName(productName); detailY.setConsumePlatform(String.valueOf(platform)); detailY.setRechargeWay(Way); detailY.setArea(country); detailY.setCreateTime(erp.getCreateTime()); detailY.setGold_last(goldLast); detailY.setUid(uid); detailY.setUsername(name); BigDecimal buyJb =userGold.getBuyJb(); BigDecimal coreJb=userGold.getCoreJb(); buyJb = buyJb.add(rechargeJb); coreJb = coreJb.add(taskJb); // 设置更新后的Sumgold回到user对象 userGold.setBuyJb(buyJb); userGold.setCoreJb(coreJb); LocalDate now = LocalDate.now(); // 判断当前日期是在六月之前还是之后 Month currentMonth = now.getMonth(); boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue(); boolean isJune = currentMonth.getValue() == Month.JUNE.getValue(); boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue(); // 根据月份更新 free6 或 free12 if (isBeforeJune||isJune) { // 如果是六月前,更新 free6 BigDecimal free6 = userGold.getFree6().add(freeJb); userGold.setFree6(free6); } else if (isAfterJune) { // 如果是六月后,更新 free12 BigDecimal free12 = userGold.getFree12().add(freeJb); userGold.setFree12(free12); } recharge.setJwcode(JwCode); recharge.setPaidGold(rechargeJb); recharge.setFreeGold(freeJb); recharge.setRechargeGold(rechargeJb); recharge.setRechargeWay(Way); recharge.setPayWay("ERP"); recharge.setRechargeTime(erp.getCreateTime()); recharge.setRemark(remark); recharge.setAdminName(adminName); rechargeMapper.insert(recharge); } else if (typesToUpdateOne.contains(type)) { System.out.println("消费------------------------------------------------------"); detailY.setUpdateType(1); // 设置 updateType 为 1 detailY.setJwcode(JwCode); detailY.setGtype(Integer.valueOf(type)); detailY.setRechargeCoin(rechargeJb); detailY.setFreeCoin(freeJb); detailY.setTaskCoin(taskJb); detailY.setRemark(remark); detailY.setName(adminName); detailY.setUsername(name); detailY.setArea(country); detailY.setProductName(productName); detailY.setConsumePlatform(String.valueOf(platform)); detailY.setConsumeType(Way); detailY.setGold_last(goldLast); detailY.setUid(uid); detailY.setCreateTime(erp.getCreateTime()); BigDecimal buyJb =userGold.getBuyJb(); BigDecimal coreJb=userGold.getCoreJb(); buyJb = buyJb.add(rechargeJb); coreJb = coreJb.add(taskJb); // 设置更新后的Sumgold回到user对象 userGold.setBuyJb(buyJb); userGold.setCoreJb(coreJb); LocalDate now = LocalDate.now(); // 判断当前日期是在六月之前还是之后 Month currentMonth = now.getMonth(); boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue(); boolean isJune = currentMonth.getValue() == Month.JUNE.getValue(); boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue(); // 根据月份更新 free6 或 free12 if (isBeforeJune||isJune) { // 如果是六月前,更新 free6 BigDecimal free6 = userGold.getFree6().add(freeJb); userGold.setFree6(free6); } else if (isAfterJune) { // 如果是六月后,更新 free12 BigDecimal free12 = userGold.getFree12().add(freeJb); userGold.setFree12(free12); } } else if (typesToUpdateTwo.contains(type)) { System.out.println("退款------------------------------------------------------"); detailY.setUpdateType(2); // 设置 updateType 为 2 detailY.setJwcode(JwCode); detailY.setGtype(Integer.valueOf(type)); detailY.setRechargeCoin(rechargeJb); detailY.setFreeCoin(freeJb); detailY.setTaskCoin(taskJb); detailY.setRemark(remark); detailY.setName(adminName); detailY.setUsername(name); detailY.setArea(country); detailY.setProductName(productName); detailY.setConsumePlatform(String.valueOf(platform)); detailY.setRefundType(Way); detailY.setCreateTime(erp.getCreateTime()); detailY.setGold_last(goldLast); detailY.setUid(uid); BigDecimal buyJb =userGold.getBuyJb(); BigDecimal coreJb=userGold.getCoreJb(); buyJb = buyJb.add(rechargeJb); coreJb = coreJb.add(taskJb); // 设置更新后的Sumgold回到user对象 userGold.setBuyJb(buyJb); userGold.setCoreJb(coreJb); LocalDate now = LocalDate.now(); // 判断当前日期是在六月之前还是之后 Month currentMonth = now.getMonth(); boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue(); boolean isJune = currentMonth.getValue() == Month.JUNE.getValue(); boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue(); // 根据月份更新 free6 或 free12 if (isBeforeJune||isJune) { // 如果是六月前,更新 free6 BigDecimal free6 = userGold.getFree6().add(freeJb); userGold.setFree6(free6); } else if (isAfterJune) { // 如果是六月后,更新 free12 BigDecimal free12 = userGold.getFree12().add(freeJb); userGold.setFree12(free12); } }else if (typesToUpdateThree.contains(type)) { System.out.println("其他------------------------------------------------------"); detailY.setUpdateType(3); // 设置 updateType 为 3 detailY.setJwcode(JwCode); detailY.setGtype(Integer.valueOf(type)); detailY.setRechargeCoin(rechargeJb); detailY.setFreeCoin(freeJb); detailY.setTaskCoin(taskJb); detailY.setRemark(remark); detailY.setName(adminName); detailY.setUsername(name); detailY.setArea(country); detailY.setProductName(productName); detailY.setConsumePlatform(String.valueOf(platform)); detailY.setReson(Way); detailY.setCreateTime(erp.getCreateTime()); detailY.setGold_last(goldLast); detailY.setUid(uid); BigDecimal buyJb =userGold.getBuyJb(); BigDecimal coreJb=userGold.getCoreJb(); buyJb = buyJb.add(rechargeJb); coreJb = coreJb.add(taskJb); // 设置更新后的Sumgold回到user对象 userGold.setBuyJb(buyJb); userGold.setCoreJb(coreJb); LocalDate now = LocalDate.now(); // 判断当前日期是在六月之前还是之后 Month currentMonth = now.getMonth(); boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue(); boolean isJune = currentMonth.getValue() == Month.JUNE.getValue(); boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue(); // 根据月份更新 free6 或 free12 if (isBeforeJune||isJune) { // 如果是六月前,更新 free6 BigDecimal free6 = userGold.getFree6().add(freeJb); userGold.setFree6(free6); } else if (isAfterJune) { // 如果是六月后,更新 free12 BigDecimal free12 = userGold.getFree12().add(freeJb); userGold.setFree12(free12); } } // 添加其他业务逻辑 System.out.println(detailY+"-----测试能否传输------"); userMapper.updateGold(userGold); return detailYMapper.add(detailY); } }