diff --git a/pom.xml b/pom.xml index bf598a5..09fb9bb 100644 --- a/pom.xml +++ b/pom.xml @@ -10,8 +10,8 @@ com.example demo - - 0.0.3-SNAPSHOT + 0.0.2-SNAPSHOT + demo demo diff --git a/src/main/java/com/example/demo/Util/BaseDES.java b/src/main/java/com/example/demo/Util/BaseDES.java index 148d412..1ffaf10 100644 --- a/src/main/java/com/example/demo/Util/BaseDES.java +++ b/src/main/java/com/example/demo/Util/BaseDES.java @@ -93,7 +93,7 @@ public class BaseDES { public static void main(String args[]) { try { BaseDES d = new BaseDES(); - String encryptedText = d.encrypt("94615273"); + String encryptedText = d.encrypt("90046726"); System.out.println("加密结果:" + encryptedText); System.out.println("加密字符串:90005179》"+d.encrypt("90005179")); System.out.println("解密字符串:6aaef5277c050f7ae383f816651098ff》"+d.decrypt("6aaef5277c050f7ae383f816651098ff")); diff --git a/src/main/java/com/example/demo/Util/DESGB.java b/src/main/java/com/example/demo/Util/DESGB.java new file mode 100644 index 0000000..59fe7b7 --- /dev/null +++ b/src/main/java/com/example/demo/Util/DESGB.java @@ -0,0 +1,107 @@ +package com.example.demo.Util; + + +import java.security.*; +import javax.crypto.*; + +public class DESGB { + private static String strDefaultKey = "testhlsoft"; + + private Cipher encryptCipher = null; + + private Cipher decryptCipher = null; + + public static String byteArr2HexStr(byte[] arrB) throws Exception { + int iLen = arrB.length; + + StringBuffer sb = new StringBuffer(iLen * 2); + for (int i = 0; i < iLen; i++) { + int intTmp = arrB[i]; + + while (intTmp < 0) { + intTmp = intTmp + 256; + } + + if (intTmp < 16) { + sb.append("0"); + } + sb.append(Integer.toString(intTmp, 16)); + } + return sb.toString(); + } + + public static byte[] hexStr2ByteArr(String strIn) throws Exception { + byte[] arrB = strIn.getBytes(); + int iLen = arrB.length; + + byte[] arrOut = new byte[iLen / 2]; + for (int i = 0; i < iLen; i = i + 2) { + String strTmp = new String(arrB, i, 2); + arrOut[i / 2] = (byte) Integer.parseInt(strTmp, 16); + } + return arrOut; + } + + public DESGB() throws Exception { + this(strDefaultKey); + } + + public DESGB(String strKey) throws Exception { + + Key key = getKey(strKey.getBytes()); + + encryptCipher = Cipher.getInstance("DES"); + encryptCipher.init(Cipher.ENCRYPT_MODE, key); + + decryptCipher = Cipher.getInstance("DES"); + decryptCipher.init(Cipher.DECRYPT_MODE, key); + } + + public byte[] encrypt(byte[] arrB) throws Exception { + return encryptCipher.doFinal(arrB); + } + + public String encrypt(String strIn) throws Exception { + return byteArr2HexStr(encrypt(strIn.getBytes())); + } + + public byte[] decrypt(byte[] arrB) throws Exception { + return decryptCipher.doFinal(arrB); + } + + /** + * @功能描述: 解决中文乱码问题 + * @开发人员: 弘历研发部 刘志红 于 2024-1-28上午11:27:38 创建 + * @参数介绍: @param strIn + * @参数介绍: @return + * @参数介绍: @throws Exception + * @返回数据: String + * @版本编号: V1.0 + */ + public String decrypt(String strIn) throws Exception { + return new String(decrypt(hexStr2ByteArr(strIn)),"UTF-8"); + } + + private Key getKey(byte[] arrBTmp) throws Exception { + + byte[] arrB = new byte[8]; + + for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) { + arrB[i] = arrBTmp[i]; + } + + Key key = new javax.crypto.spec.SecretKeySpec(arrB, "DES"); + + return key; + } + + + public static void main(String args[]) { + try { + DESGB d = new DESGB(); + System.out.println(d.decrypt("d19f27abb3486c689304600788c604e700abf96d6bd1c9ca")); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/example/demo/Util/GoldTistV2.java b/src/main/java/com/example/demo/Util/GoldTistV2.java new file mode 100644 index 0000000..388f677 --- /dev/null +++ b/src/main/java/com/example/demo/Util/GoldTistV2.java @@ -0,0 +1,227 @@ +package com.example.demo.Util; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Random; + + + +/** + * @开发目的: 测试使用 + * @开发人员: 弘历研发部 刘志红 + * @开发时间: 2024-1-26下午1:42:18 + * @软件版本: V1.0 + */ +public class GoldTistV2 { + + + + + private static String url = "http://hcm.rzfwq.com/hwhcnewA/"; + + + /** + *
+	 * 发送不带参数的GET的HTTP请求
+	 * 
+ * + * @param reqUrl HTTP请求URL + * @return HTTP响应的字符串 + */ + public static String doGet(String reqUrl) { + HttpURLConnection url_con = null; + String responseContent = null; + try { + StringBuffer params = new StringBuffer(); + String queryUrl = reqUrl; + int paramIndex = reqUrl.indexOf("?"); + + if (paramIndex > 0) { + queryUrl = reqUrl.substring(0, paramIndex); + String parameters = reqUrl.substring(paramIndex + 1, reqUrl.length()); + String[] paramArray = parameters.split("&"); + for (int i = 0; i < paramArray.length; i++) { + String string = paramArray[i]; + int index = string.indexOf("="); + if (index > 0) { + String parameter = string.substring(0, index); + String value = string.substring(index + 1, string.length()); + params.append(parameter); + params.append("="); + params.append(URLEncoder.encode(value, "UTF-8")); + params.append("&"); + } + } + + params = params.deleteCharAt(params.length() - 1); + } + + URL url = new URL(queryUrl); + url_con = (HttpURLConnection) url.openConnection(); + url_con.setRequestMethod("GET"); + System.setProperty("sun.net.client.defaultConnectTimeout", String.valueOf(500000));// (单位:毫秒)jdk1.4换成这个,连接超时 + System.setProperty("sun.net.client.defaultReadTimeout", String.valueOf(500000)); // (单位:毫秒)jdk1.4换成这个,读操作超时 + // url_con.setConnectTimeout(5000);//(单位:毫秒)jdk + // 1.5换成这个,连接超时 + // url_con.setReadTimeout(5000);//(单位:毫秒)jdk 1.5换成这个,读操作超时 + url_con.setDoOutput(true); + byte[] b = params.toString().getBytes(); + url_con.getOutputStream().write(b, 0, b.length); + url_con.getOutputStream().flush(); + url_con.getOutputStream().close(); + InputStream in = url_con.getInputStream(); + BufferedReader rd = new BufferedReader(new InputStreamReader(in, "UTF-8")); + String tempLine = rd.readLine(); + StringBuffer temp = new StringBuffer(); + String crlf = System.getProperty("line.separator"); + while (tempLine != null) { + temp.append(tempLine); + temp.append(crlf); + tempLine = rd.readLine(); + } + responseContent = temp.toString(); + rd.close(); + in.close(); + } + catch (IOException e) { + e.printStackTrace(); + }finally { + if (url_con != null) { + url_con.disconnect(); + } + } + return responseContent; + } + + + + + /** + * 生成 MD5 签名 + * + * @param params 待签名的参数数组 + * @param secretKey 密钥 + * @return 签名的 MD5 哈希值,若出现异常则返回 null + */ + public static String generateSignature(String[] params, String secretKey) { + // 将参数数组转换为列表,以便进行排序 + List paramList = new ArrayList(); + Collections.addAll(paramList, params); + // 对参数列表进行排序 + Collections.sort(paramList); + + // 拼接排序后的参数 + StringBuilder paramString = new StringBuilder(); + for (String param : paramList) { + paramString.append(param); + } + + // 拼接密钥 + paramString.append(secretKey); + + try { + // 获取 MD5 消息摘要实例 + MessageDigest md = MessageDigest.getInstance("MD5"); + // 计算摘要,明确指定字符编码为 UTF-8 + byte[] digest = md.digest(paramString.toString().getBytes("UTF-8")); + // 将字节数组转换为十六进制字符串 + StringBuilder hexString = new StringBuilder(); + for (byte b : digest) { + String hex = Integer.toHexString(0xFF & b); + if (hex.length() == 1) { + hexString.append('0'); + } + hexString.append(hex); + } + return hexString.toString(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + return null; + } catch (java.io.UnsupportedEncodingException e) { + e.printStackTrace(); + return null; + } + } + /** + * @功能描述: 生成随机数 + * @开发人员: 弘历研发部 刘志红 于 2024-1-25下午5:45:36 创建 + * @参数介绍: @param len + * @参数介绍: @return + * @返回数据: String + * @版本编号: V1.0 + */ + public static String RandomUid(int len){ + String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjklmnpqrstuvwxyz23456789"; + StringBuilder result = new StringBuilder(); + Random rnd = new Random(); + int strlen = characters.length(); + while (result.length() < 8) { // length of the random string. + int index = (int) (rnd.nextFloat() * strlen); + result.append(characters.charAt(index)); + } + return "JB"+result.toString(); + } + + /** + * 类型说明: + * + 55 免费金币 金币系统退商品 + 56 永久金币 金币系统退商品 + 57 任务金币 金币系统退商品 + 58 免费金币 金币系统退金币 + 59 任务金币 金币系统退金币 + * @功能描述: 金币平台更新客户金币 + * @开发人员: 弘历研发部 刘志红 于 2025-3-21下午1:58:13 创建 + * @参数介绍: @param jwcode 账号 + * @参数介绍: @param lx 类型 + * @参数介绍: @param jbs 金币数量 + * @参数介绍: @param remark 备注 + * @参数介绍: @param yjjb 永久金币 + * @参数介绍: @param czr 操作人 + * @参数介绍: @param goodsname 商品名称 + * @参数介绍: @return + * @返回数据: String 返回状态1加成功2减成功其他失败 -5 金币不足 -6 类型错误 -7签名错误 + * @版本编号: V1.0 + */ + public static String addCoinNew(String jwcode, int lx, double jbs, + String remark,double yjjb,String czr,String goodsname){ + //查错误使用 + String sjzfc = RandomUid(10); + String resp = ""; + try { + DESGB desjbkc = new DESGB("Jbxt.205"); + String sk = "jwcode="+jwcode+"&number="+jbs+"&uid="+sjzfc+"&remark="+ + remark+"&czr="+czr+"&yjjb="+yjjb+"&czpt=4&goodsname="+goodsname+"&type="+lx; + System.out.println("签名前:"+sk); + String sign = generateSignature(sk.split("&"),"222251821eba7efab6d48e388b8f6baa"); + sk = desjbkc.encrypt(new String(sk.getBytes(), "UTF-8")); + System.out.println(url+"goldUpdate_sign.gold?app=4&sk="+sk+"&sign="+sign); + resp = doGet(url+"goldUpdate_sign.gold?app=4&sk="+sk+"&sign="+sign); + }catch (Exception e){ + System.out.println("加金币异常"+e.toString()); + } + System.out.println(resp); + return resp; + } + + + + public static void main(String[] args) throws Exception { + //调用demo + addCoinNew("94226013",55,-1,"退1金币测试",0,"刘志宏","文章11"); + + } + + + +} diff --git a/src/main/java/com/example/demo/controller/AuditController.java b/src/main/java/com/example/demo/controller/AuditController.java index 164449a..3169140 100644 --- a/src/main/java/com/example/demo/controller/AuditController.java +++ b/src/main/java/com/example/demo/controller/AuditController.java @@ -1,13 +1,11 @@ package com.example.demo.controller; +import com.example.demo.Util.GoldTistV2; import com.example.demo.domain.entity.*; import com.example.demo.domain.vo.Page; import com.example.demo.domain.vo.Result; -import com.example.demo.mapper.AdminMapper; -import com.example.demo.mapper.DetailMapper; -import com.example.demo.mapper.RefundMapper; -import com.example.demo.mapper.UserMapper; +import com.example.demo.mapper.*; import com.example.demo.sevice.AuditService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -39,6 +37,8 @@ public class AuditController { private final AuditService auditService; @Autowired private AdminMapper adminMapper; + @Autowired + private ConsumeMapper consumeMapper; @PostMapping("/add") public Result add(@RequestBody Audit audit){ @@ -73,6 +73,9 @@ public class AuditController { BigDecimal rechargeCoin = detail.getRechargeCoin(); BigDecimal taskCoin = detail.getTaskCoin(); BigDecimal freeCoin = detail.getFreeCoin(); + String good = detail.getRefundGoods(); + + String jwcode = detail.getJwcode(); User user = userMapper.selectByJwcode(detail.getJwcode()); user.setBuyJb(user.getBuyJb().add(rechargeCoin)); @@ -81,6 +84,7 @@ public class AuditController { Admin admin =adminMapper.selectById(audit.getAdminId()); + LocalDate now = LocalDate.now(); Month currentMonth = now.getMonth(); @@ -93,9 +97,12 @@ public class AuditController { detail.setUsername(user1.getName()); // 获取 user 的 name 设置到 detail 的 username detail.setArea(user1.getArea()); // 获取 user 的 area 设置到 detail 的 area detail.setName(admin.getName()); - refundMapper.inserty(detail); - refundMapper.updateOrderCode(detail.getContactId()); - userMapper.update(user); +// refundMapper.inserty(detail); +// refundMapper.updateOrderCode(detail.getContactId()); +// userMapper.update(user); + if(rechargeCoin!=null&&rechargeCoin.compareTo(BigDecimal.ZERO)!=0){ + GoldTistV2.addCoinNew(detail.getJwcode(), 56, (rechargeCoin.add(taskCoin).add(freeCoin)).doubleValue(), audit.getRemark(), rechargeCoin.doubleValue(), admin.getName(), good); + } } // 充值驳回 // if (audit.getStatus() == 2 && audit.getRechargeId() != null) { diff --git a/src/main/java/com/example/demo/controller/ConsumeController.java b/src/main/java/com/example/demo/controller/ConsumeController.java index 8f11aec..dac4559 100644 --- a/src/main/java/com/example/demo/controller/ConsumeController.java +++ b/src/main/java/com/example/demo/controller/ConsumeController.java @@ -14,6 +14,7 @@ import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; import java.util.Arrays; +import java.util.List; @RestController @RequestMapping("/consume") @@ -63,7 +64,7 @@ public class ConsumeController { try { userService.search(userVo); - return Result.success(consumeService.getDeatil(Integer.valueOf(userVo.getJwcode()))); + return Result.success(consumeService.getDeatil(userVo.getJwcode())); } catch (Exception e) { log.error(Arrays.toString(e.getStackTrace())); return Result.error(e.getMessage()); @@ -84,4 +85,15 @@ public class ConsumeController { return Result.error(e.getMessage()); } } + + @PostMapping("/getConsume") + public Result getConsume() { + try { + List result = consumeService.getConsume(); + return Result.success(result); + } catch (Exception e) { + log.error(Arrays.toString(e.getStackTrace())); + return Result.error(e.getMessage()); + } + } } diff --git a/src/main/java/com/example/demo/domain/entity/DetailY.java b/src/main/java/com/example/demo/domain/entity/DetailY.java index e530450..c28e4fe 100644 --- a/src/main/java/com/example/demo/domain/entity/DetailY.java +++ b/src/main/java/com/example/demo/domain/entity/DetailY.java @@ -31,6 +31,7 @@ public class DetailY implements Serializable { private BigDecimal rechargeCoin; private BigDecimal freeCoin; private BigDecimal taskCoin; + private BigDecimal gold; private Integer adminId; private Integer status; diff --git a/src/main/java/com/example/demo/domain/vo/Meium.java b/src/main/java/com/example/demo/domain/vo/Meium.java index bbd15ae..8dba471 100644 --- a/src/main/java/com/example/demo/domain/vo/Meium.java +++ b/src/main/java/com/example/demo/domain/vo/Meium.java @@ -18,7 +18,6 @@ import java.util.Map; @Data @NoArgsConstructor - public class Meium implements Serializable { //中间-11个月 每月充值金币 private BigDecimal rechargeSumCoin; @@ -42,6 +41,9 @@ public class Meium implements Serializable { private String day; + private String sortField; + private String sortOrder; + @JsonAnySetter public void setAdditionalProperty(String name, Object value) { this.additionalProperties.put(name, value); diff --git a/src/main/java/com/example/demo/mapper/ConsumeMapper.java b/src/main/java/com/example/demo/mapper/ConsumeMapper.java index 9e0537e..d49a5c3 100644 --- a/src/main/java/com/example/demo/mapper/ConsumeMapper.java +++ b/src/main/java/com/example/demo/mapper/ConsumeMapper.java @@ -12,6 +12,7 @@ import java.util.List; public interface ConsumeMapper { SumConsume getSumConsume(SumConsume sumConsume); + List getConsume(); //通过id查询user全部信息 @Select({ @@ -84,7 +85,7 @@ public interface ConsumeMapper { "inner join product on detail_y.product_id= product.product_id ", "where `detail_flag`=1 AND update_type = '1' and jwcode=#{jwcode} AND refund_flag=1" }) - List getDeatil(Integer jwcode); + List getDeatil(String jwcode); //查询消费信息 diff --git a/src/main/java/com/example/demo/mapper/StatisticsMapper.java b/src/main/java/com/example/demo/mapper/StatisticsMapper.java index 6504027..5de1048 100644 --- a/src/main/java/com/example/demo/mapper/StatisticsMapper.java +++ b/src/main/java/com/example/demo/mapper/StatisticsMapper.java @@ -17,6 +17,41 @@ import java.util.List; @Mapper public interface StatisticsMapper { + + List getMeium(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + //全年累计金币数 @Select("SELECT SUM(recharge_coin) / 100 AS rechargeSumCoin, " + " SUM(free_coin) / 100 AS freeSumCoin, " + @@ -535,7 +570,6 @@ public interface StatisticsMapper { "" }) List getPay(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); - } diff --git a/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java index edfac74..c50425a 100644 --- a/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java @@ -3,6 +3,7 @@ package com.example.demo.serviceImpl; +import com.example.demo.Util.GoldTistV2; import com.example.demo.domain.entity.*; import com.example.demo.domain.vo.ConsumeDetail; import com.example.demo.mapper.*; @@ -142,10 +143,13 @@ public class AuditServiceImpl implements AuditService { detailY.setOrderCode(uuid); detailY.setFirstRecharge(0); System.out.println(detailY); - result = detailYMapper.add(detailY); - if (result != 1) { - throw new Exception("Failed to insert another entity"); - } +// result = detailYMapper.add(detailY); + if(paidGold != null && paidGold.compareTo(BigDecimal.ZERO) != 0) { + GoldTistV2.addCoinNew(jwcode, 64, paidGold.doubleValue(), remark, 0, username, "金币"); + } + if(freeGold != null && freeGold.compareTo(BigDecimal.ZERO) != 0) { + GoldTistV2.addCoinNew(jwcode, 63, freeGold.doubleValue(), remark, 0, username, "金币"); + } } return auditMapper.update(audit); } diff --git a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java index 3da9e32..099f17a 100644 --- a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java @@ -130,7 +130,12 @@ public class ConsumeServiceImpl implements ConsumeService { return consumeMapper.getSumConsume(sumConsume); } - public List getDeatil(Integer jwcode){ + @Override + public List getConsume() { + return consumeMapper.getConsume(); + } + + public List getDeatil(String jwcode){ return consumeMapper.getDeatil(jwcode); } diff --git a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java index 818a875..8b84836 100644 --- a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java @@ -113,35 +113,6 @@ public class RechargeServiceImpl implements RechargeService { throw new Exception("Failed to insert another entity"); } -// BigDecimal paidGold1 =recharge.getPaidGold(); -// BigDecimal freeGold1 =recharge.getFreeGold(); -// User user = userMapper.select(jwcode); -// BigDecimal buyJb =user.getBuyJb(); -// -// buyJb = buyJb.add(paidGold1); -// -//// 设置更新后的Sumgold回到user对象 -// user.setBuyJb(buyJb); -// LocalDate now = LocalDate.now(); -// -//// 判断当前日期是在六月之前还是之后 -// Month currentMonth = now.getMonth(); -// boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue(); -// boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue(); -// -//// 根据月份更新 free6 或 free12 -// if (isBeforeJune) { -// // 如果是六月前,更新 free6 -// BigDecimal free6 = user.getFree6().add(freeGold1); -// user.setFree6(free6); -// } else if (isAfterJune) { -// // 如果是六月后,更新 free12 -// BigDecimal free12 = user.getFree12().add(freeGold1); -// user.setFree12(free12); -// } -// -// System.out.println(user+"----------------------------------------------------------"); -// result = userMapper.update(user); if (result != 1) { throw new Exception("Failed to insert another entity"); } diff --git a/src/main/java/com/example/demo/sevice/ConsumeService.java b/src/main/java/com/example/demo/sevice/ConsumeService.java index a6f900e..e01e951 100644 --- a/src/main/java/com/example/demo/sevice/ConsumeService.java +++ b/src/main/java/com/example/demo/sevice/ConsumeService.java @@ -25,4 +25,5 @@ public interface ConsumeService { PageInfo searchForPage(Integer pageNum, Integer pageSize, ConsumeDetail consumeDetail); SumConsume getSumConsume(SumConsume sumConsume); + List getConsume(); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8044f2e..67d9427 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -31,7 +31,7 @@ spring: cache-null-values: true data: redis: - database: 2 + database: 1 host: 54.251.137.151 port: 10703 password: 8912h12jhhajsd diff --git a/src/main/resources/mapper/ConsumeMapper.xml b/src/main/resources/mapper/ConsumeMapper.xml index bbfd219..b55e839 100644 --- a/src/main/resources/mapper/ConsumeMapper.xml +++ b/src/main/resources/mapper/ConsumeMapper.xml @@ -72,4 +72,7 @@ + \ No newline at end of file diff --git a/src/main/resources/mapper/DetailYMapper.xml b/src/main/resources/mapper/DetailYMapper.xml index d4258ce..4da1153 100644 --- a/src/main/resources/mapper/DetailYMapper.xml +++ b/src/main/resources/mapper/DetailYMapper.xml @@ -14,7 +14,9 @@ detail_y.consume_platform, detail_y.free_coin, detail_y.recharge_coin, - detail_y.task_coin + detail_y.task_coin, + detail_y.product_name, + (detail_y.recharge_coin + detail_y.free_coin + detail_y.task_coin) AS gold FROM detail_y @@ -74,7 +76,9 @@ detail_y.consume_platform, detail_y.free_coin, detail_y.recharge_coin, - detail_y.task_coin + detail_y.task_coin, + detail_y.product_name, + (detail_y.recharge_coin + detail_y.free_coin + detail_y.task_coin) AS totalCoin FROM detail_y diff --git a/src/main/resources/mapper/StatisticsMapper.xml b/src/main/resources/mapper/StatisticsMapper.xml new file mode 100644 index 0000000..cf006e8 --- /dev/null +++ b/src/main/resources/mapper/StatisticsMapper.xml @@ -0,0 +1,41 @@ + + + + + + \ No newline at end of file