{"id":60,"date":"2025-09-24T14:50:55","date_gmt":"2025-09-24T06:50:55","guid":{"rendered":"http:\/\/wp.buildyou.top\/?p=60"},"modified":"2025-09-24T17:57:43","modified_gmt":"2025-09-24T09:57:43","slug":"%e9%9c%80%e6%b1%82%ef%bc%9a%e4%bd%bf%e7%94%a8mongotemplate%e6%9f%a5%e8%af%a2%e9%9b%86%e5%90%88usertrade%e8%bf%87%e6%bb%a4%e9%87%8d%e5%a4%8d%e6%95%b0%e6%8d%ae","status":"publish","type":"post","link":"https:\/\/wp.buildyou.top\/index.php\/2025\/09\/24\/%e9%9c%80%e6%b1%82%ef%bc%9a%e4%bd%bf%e7%94%a8mongotemplate%e6%9f%a5%e8%af%a2%e9%9b%86%e5%90%88usertrade%e8%bf%87%e6%bb%a4%e9%87%8d%e5%a4%8d%e6%95%b0%e6%8d%ae\/","title":{"rendered":"\u9700\u6c42\uff1a\u4f7f\u7528mongoTemplate\u67e5\u8be2\u96c6\u5408UserTrade,\u8fc7\u6ee4\u91cd\u590d\u6570\u636e"},"content":{"rendered":"\n<p>\u9700\u6c42\uff1a\u4f7f\u7528mongoTemplate\u67e5\u8be2\u96c6\u5408UserTrade\u6570\u636e\uff0c1.\u67e5\u8be2\u6761\u4ef6\u4e3aassetNoList\uff08\u5b57\u6bb5assetNo\u96c6\u5408\uff09\u3001idList\uff08_id\u96c6\u5408\uff09\u53castate=1\u30022.\u8fc7\u6ee4\u91cd\u590d\u6570\u636e\uff0c\u53ea\u6309assetNo\u8fc7\u6ee4\uff0c3.\u8003\u8651assetNoList\u6216idList\u6709\u53ef\u80fd\u4e3a\u7a7a\uff0c4.\u589e\u52a0\u9700\u6c42\uff0cUserTrade\u96c6\u5408\u6709\u5341\u51e0\u4e2a\u5f88\u591a\u5b57\u6bb5\uff0c\u800c\u6211\u53ea\u9700\u8981\u8fd4\u56de_id\u3001assetNo\u3001userId\u3001templateId\u3001templateName\u3001remarks\u3001tradeNo\u8fd9\u51e0\u4e2a\u5b57\u6bb5\u5373\u53ef\u30025.\u5bf9\u4e8e\u91cd\u590d\u6570\u636e\u884c\uff0cpoint\u8fd4\u56de\u96c6\u5408points\uff0c\u5176\u4ed6\u6761\u4ef6\u4e0d\u53d8<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/&nbsp;1.&nbsp;\u52a8\u6001\u6784\u5efa\u67e5\u8be2\u6761\u4ef6\uff08\u5904\u7406\u7a7a\u5217\u8868\uff09<br>Criteria&nbsp;criteria&nbsp;=&nbsp;Criteria.where(\"state\").is(Constant.DEL_FLAG_NORMAL);<br>if&nbsp;(idList&nbsp;!=&nbsp;null&nbsp;&amp;&amp;&nbsp;!idList.isEmpty()&nbsp;&amp;&amp;&nbsp;!idList.stream().allMatch(Objects::isNull))&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;criteria&nbsp;=&nbsp;criteria.and(\"_id\").in(idList);<br>}&nbsp;else&nbsp;if&nbsp;(assetNoList&nbsp;!=&nbsp;null&nbsp;&amp;&amp;&nbsp;!assetNoList.isEmpty())&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;criteria&nbsp;=&nbsp;criteria.and(\"assetNo\").in(assetNoList);<br>}<br><br>\/\/&nbsp;2.&nbsp;\u805a\u5408\u6846\u67b6\u5b9e\u73b0\u53bb\u91cd\u548c\u5b57\u6bb5\u6295\u5f71<br>Aggregation&nbsp;aggregation&nbsp;=&nbsp;Aggregation.newAggregation(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aggregation.match(criteria),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aggregation.group(\"assetNo\")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.first(\"_id\").as(\"originalId\")&nbsp;&nbsp;\/\/&nbsp;\u4fdd\u7559\u539f\u59cb_id<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.first(\"assetNo\").as(\"assetNo\")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.first(\"userId\").as(\"userId\")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.first(\"templateId\").as(\"templateId\")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.first(\"templateName\").as(\"templateName\")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.first(\"remarks\").as(\"remarks\")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.first(\"tradeNo\").as(\"tradeNo\")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.push(\"$point\").as(\"points\"),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aggregation.project(\"assetNo\",&nbsp;\"userId\",&nbsp;\"templateId\",&nbsp;\"templateName\",&nbsp;\"remarks\",&nbsp;\"tradeNo\")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.and(\"originalId\").as(\"_id\")&nbsp;&nbsp;\/\/&nbsp;\u6062\u590d\u539f\u59cb_id<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.andInclude(\"points\")&nbsp;&nbsp;\/\/&nbsp;\u5982\u679c\u9700\u8981points<br>);<br><br>\/\/&nbsp;3.&nbsp;\u6267\u884c\u805a\u5408\u67e5\u8be2\u5e76\u6620\u5c04\u7ed3\u679c<br>AggregationResultsresults&nbsp;=&nbsp;mongoTemplate.aggregate(aggregation,\"userTrade\",UserTrade.class);<br>Listlist&nbsp;=&nbsp;results.getMappedResults();<br>if(ListUtils.isEmpty(list)){<br>&nbsp;&nbsp;&nbsp;&nbsp;continue;<br>}<\/pre>\n\n\n\n<p>UserTrade\u5b9e\u4f53\u7c7b<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">@Data<br>@Builder<br>public&nbsp;class&nbsp;UserTrade&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u4e3b\u952eid<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;_id;<br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u4ea4\u6613\u7f16\u53f7<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;@JsonSerialize(using&nbsp;=&nbsp;ToStringSerializer.class)<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Long&nbsp;tradeNo;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u8d44\u4ea7\u7f16\u53f7<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Long&nbsp;assetNo;<br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u5458\u5de5\u7528\u6237id<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;userId;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u767b\u5f55\u8d26\u53f7<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;username;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u624b\u673a\u53f7<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;phone;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u59d3\u540d<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;name;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u5b50\u6a21\u677fid<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Long&nbsp;templateId;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u5b50\u6a21\u677f\u540d\u79f0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;templateName;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u5145\u503c\u91d1\u989d<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;BigDecimal&nbsp;point;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u5269\u4f59\u91d1\u989d<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;BigDecimal&nbsp;surplusPoint;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u64a4\u56de\u72b6\u6001(0-\u5df2\u64a4\u56de\uff0c1-\u672a\u64a4\u56de\uff09<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Integer&nbsp;state;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;stateName;<br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u8fc7\u671f\u65f6\u95f4<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Date&nbsp;expireTime;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u4ea4\u6613\u65f6\u95f4<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Date&nbsp;gmtCreate;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u4ea4\u6613\u5907\u6ce8<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;remarks;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u51bb\u7ed3\u72b6\u6001<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Integer&nbsp;freezeState;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u51bb\u7ed3\u72b6\u6001\u540d\u79f0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;freezeStateName;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u7b7e\u540d\u9886\u53d6\u72b6\u6001&nbsp;0&nbsp;\u672a\u9886\u53d6&nbsp;&nbsp;1&nbsp;\u5df2\u9886\u53d6<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Integer&nbsp;collectState;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;collectStateValue;<br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u622a\u6b62\u9886\u53d6\u65f6\u95f4<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Date&nbsp;collectExpireTime;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u9886\u53d6\u65f6\u95f4<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Date&nbsp;collectTime;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u5206\u914d\u7f16\u53f7\uff08\u6fc0\u6d3b\u5361\u4e13\u6709\uff09<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;allotNumber;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u652f\u51fa\u65f6\u95f4<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Date&nbsp;paidTime;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u6fc0\u6d3b\u5361\u5361\u53f7<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;assetAccount;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u7ed3\u7b97\u7c7b\u578b<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Integer&nbsp;settType;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u7ed3\u7b97\u7c7b\u578b&nbsp;1.\u5148\u7ed3&nbsp;2.\u540e\u7ed3<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;settTypeName;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u8f6c\u5165\u8f6c\u51fa\u64cd\u4f5c\u7684<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u539f\u59cb\u6279\u6b21\u7f16\u53f7\uff08reTradeNo\uff0c\u8f6c\u5165\u8bb0\u5f55\u5219\u4e3a\u4ece\u54ea\u4e2a\u6279\u6b21\u8f6c\u5165\u7684\u4ea4\u6613\u7f16\u53f7\uff1b<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u8f6c\u51fa\u8bb0\u5f55\u5219\u4ece\u81ea\u5df1\u7684\u54ea\u4e2a\u6279\u6b21\u8f6c\u51fa\u7684\u4ea4\u6613\u7f16\u53f7\uff09<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;reTradeNo;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u76ee\u6807\/\u6765\u6e90\u8d44\u4ea7\u7f16\u53f7\uff08reAssetNo,\u8f6c\u5165=\u4ece\u54ea\u6765\uff0c\u8f6c\u51fa=\u5230\u54ea\u53bb\uff09<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Long&nbsp;reAssetNo;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;\/*************************\u6279\u91cf\u64a4\u56de\u7279\u6709\u5b57\u6bb5**************************\/<br><br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Listpoints;<br>}<\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9700\u6c42\uff1a\u4f7f\u7528mongoTemplate\u67e5\u8be2\u96c6\u5408UserTrade\u6570\u636e\uff0c1.\u67e5\u8be2\u6761\u4ef6\u4e3aassetNoList\uff08\u5b57\u6bb5 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-60","post","type-post","status-publish","format-standard","hentry","category-mongdb"],"_links":{"self":[{"href":"https:\/\/wp.buildyou.top\/index.php\/wp-json\/wp\/v2\/posts\/60","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.buildyou.top\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wp.buildyou.top\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wp.buildyou.top\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.buildyou.top\/index.php\/wp-json\/wp\/v2\/comments?post=60"}],"version-history":[{"count":7,"href":"https:\/\/wp.buildyou.top\/index.php\/wp-json\/wp\/v2\/posts\/60\/revisions"}],"predecessor-version":[{"id":77,"href":"https:\/\/wp.buildyou.top\/index.php\/wp-json\/wp\/v2\/posts\/60\/revisions\/77"}],"wp:attachment":[{"href":"https:\/\/wp.buildyou.top\/index.php\/wp-json\/wp\/v2\/media?parent=60"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wp.buildyou.top\/index.php\/wp-json\/wp\/v2\/categories?post=60"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wp.buildyou.top\/index.php\/wp-json\/wp\/v2\/tags?post=60"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}