记得上下班打卡 | git大法好,push需谨慎

Commit 0e0de6b7 authored by zhengfuxin's avatar zhengfuxin

优化sql

parent 4d8e9d1c
...@@ -87,31 +87,40 @@ ...@@ -87,31 +87,40 @@
as ss ,kylin_performances kp where ss.performanceId=kp.performances_id as ss ,kylin_performances kp where ss.performanceId=kp.performances_id
</select> </select>
<select id="getUserOrder" parameterType="String" resultType="java.util.Map"> <select id="getUserOrder" parameterType="String" resultType="java.util.Map">
select p.title as 'title',p.performances_id as 'yanchuId' from kylin_performances p ,kylin_performance_status s select p.title as 'title',p.performances_id as 'yanchuId' from kylin_performances p
where p.performances_id=s.performance_id and time_end>DATE_SUB(CURDATE(), INTERVAL 6 MONTH) and s.`status` in (3,6,7,8,9,10); LEFT JOIN kylin_performance_status s ON p.performances_id=s.performance_id where
time_end>DATE_SUB(CURDATE(), INTERVAL 6 MONTH) and s.`status` in (3,6,7,8,9,10);
</select> </select>
<select id="getUserSellOneDate" parameterType="String" resultType="java.util.Map"> <select id="getUserSellOneDate" parameterType="String" resultType="java.util.Map">
select t.title as 'title',ticket_id as 'ticketId',(SUM(number)-SUM(refund_number)) as 'number',(SUM(o.price)-SUM(o.price_refund)) as 'price',SUM(r.agent_distributions * (o.price-o.price_refund)) as 'commiss',r.agent_distributions as 'paioTi' from (select * from kylin_order_tickets where created_at>DATE_SUB(CURDATE(), INTERVAL 6 MONTH)) as o /* select t.title as 'title',ticket_id as 'ticketId',(SUM(number)-SUM(refund_number)) as 'number',(SUM(o.price)-SUM(o.price_refund)) as 'price',SUM(r.agent_distributions * (o.price-o.price_refund)) as 'commiss',r.agent_distributions as 'paioTi' from (select * from kylin_order_tickets where created_at>DATE_SUB(CURDATE(), INTERVAL 6 MONTH)) as o
, kylin_order_ticket_status as s,kylin_order_ticket_relations as r,kylin_tickets as t where o.order_tickets_id=s.order_id , kylin_order_ticket_status as s,kylin_order_ticket_relations as r,kylin_tickets as t where o.order_tickets_id=s.order_id
and o.order_tickets_id=r.order_id and r.ticket_id=t.tickets_id and o.order_tickets_id=r.order_id and r.ticket_id=t.tickets_id
and r.agent_id=#{agentId} and r.performance_id=#{performanceId} and s.pay_status='1' GROUP BY r.ticket_id and r.agent_id=#{agentId} and r.performance_id=#{performanceId} and s.pay_status='1' GROUP BY r.ticket_id*/
select t.title as 'title',ticket_id as 'ticketId',(SUM(number)-SUM(refund_number)) as 'number',(SUM(o.price)-SUM(o.price_refund)) as 'price',SUM(r.agent_distributions * (o.price-o.price_refund)) as 'commiss',r.agent_distributions as 'paioTi'
from (select * from kylin_order_tickets where created_at>DATE_SUB(CURDATE(), INTERVAL 6 MONTH)) as o
LEFT JOIN kylin_order_ticket_status as s on o.order_tickets_id=s.order_id
LEFT JOIN kylin_order_ticket_relations as r ON o.order_tickets_id=r.order_id
LEFT JOIN kylin_tickets as t ON r.ticket_id=t.tickets_id
where r.agent_id=#{agentId} and r.performance_id=#{performanceId} and s.pay_status='1' GROUP BY r.ticket_id
</select> </select>
<select id="getUserSellAllDate" parameterType="String" resultType="java.util.Map"> <select id="getUserSellAllDate" parameterType="String" resultType="java.util.Map">
select sum(c.number) as 'number',SUM(c.price) as 'price',SUM(c.commiss) as 'commiss' from ( select sum(c.number) as 'number',SUM(c.price) as 'price',SUM(c.commiss) as 'commiss' from (
select t.title as 'title',ticket_id as 'ticketId',(SUM(number)-SUM(refund_number)) as 'number',(SUM(o.price)-SUM(o.price_refund)) as 'price',SUM(r.agent_distributions * (o.price-o.price_refund)) as 'commiss',r.agent_distributions as 'paioTi' from (select * from kylin_order_tickets where created_at>DATE_SUB(CURDATE(), INTERVAL 6 MONTH)) as o select t.title as 'title',ticket_id as 'ticketId',(SUM(number)-SUM(refund_number)) as 'number',(SUM(o.price)-SUM(o.price_refund)) as 'price',SUM(r.agent_distributions * (o.price-o.price_refund)) as 'commiss',r.agent_distributions as 'paioTi'
, kylin_order_ticket_status as s,kylin_order_ticket_relations as r,kylin_tickets as t where o.order_tickets_id=s.order_id from (select * from kylin_order_tickets where created_at>DATE_SUB(CURDATE(), INTERVAL 6 MONTH)) as o
and o.order_tickets_id=r.order_id and r.ticket_id=t.tickets_id LEFT JOIN kylin_order_ticket_status as s on o.order_tickets_id=s.order_id
and r.agent_id=#{agentId} and r.performance_id=#{performanceId} and s.pay_status='1' GROUP BY r.ticket_id LEFT JOIN kylin_order_ticket_relations as r ON o.order_tickets_id=r.order_id
LEFT JOIN kylin_tickets as t ON r.ticket_id=t.tickets_id
where r.agent_id=#{agentId} and r.performance_id=#{performanceId} and s.pay_status='1' GROUP BY r.ticket_id
) as c ) as c
</select> </select>
<select id="getUserSellDetail" parameterType="String" resultType="java.util.Map"> <select id="getUserSellDetail" parameterType="String" resultType="java.util.Map">
/*DATE_FORMAT(o.created_at,'%Y-%m-%d %H:%i:%s')*/ /*DATE_FORMAT(o.created_at,'%Y-%m-%d %H:%i:%s')*/
select o.user_mobile as 'mobile',o.order_tickets_id as 'orderId',(o.number-refund_number) as 'number',o.created_at as 'createTime' from kylin_order_tickets as o select o.user_mobile as 'mobile',o.order_tickets_id as 'orderId',(o.number-refund_number) as 'number',o.created_at as 'createTime' from kylin_order_tickets as o
, kylin_order_ticket_status as s,kylin_order_ticket_relations as r LEFT JOIN kylin_order_ticket_status as s ON o.order_tickets_id=s.order_id
where o.order_tickets_id=s.order_id and o.order_tickets_id=r.order_id LEFT JOIN kylin_order_ticket_relations as r on o.order_tickets_id=r.order_id
and r.agent_id=#{agentId} and s.pay_status='1' and r.ticket_id=#{ticketId} and (o.number-refund_number)>0 where r.agent_id=#{agentId} and s.pay_status='1' and r.ticket_id=#{ticketId} and (o.number-refund_number)>0
</select> </select>
<select id="getCanRefundOrderList" parameterType="java.lang.String" <select id="getCanRefundOrderList" parameterType="java.lang.String"
......
...@@ -37,5 +37,6 @@ public interface SmileUserMapper extends BaseMapper<SmileUser> { ...@@ -37,5 +37,6 @@ public interface SmileUserMapper extends BaseMapper<SmileUser> {
void updateUserStateById(@Param("uid") String uid,@Param("state") Integer state); void updateUserStateById(@Param("uid") String uid,@Param("state") Integer state);
void updateUserCheckByUid(@Param("uid") String uid,@Param("type") Integer type,@Param("reason") String reason); void updateUserCheckByUid(@Param("uid") String uid,@Param("type") Integer type,@Param("reason") String reason);
int getCount();
List<SmileUser> pageUser(@Param("offest") int offest,@Param("size") int size);
} }
...@@ -51,6 +51,19 @@ ...@@ -51,6 +51,19 @@
</where> </where>
</select> </select>
<select id="pageUser" parameterType="int" resultType="com.liquidnet.service.smile.entity.SmileUser">
select * from smile_user
<where>
del_tag = 0 AND type != 0 AND type != 3 AND type != 4
</where>
limit #{offest},#{size}
</select>
<select id="getCount" resultType="int">
select count(1) from smile_user
<where>
del_tag = 0 AND type != 0 AND type != 3 AND type != 4
</where>
</select>
<select id="selectUserCheck" parameterType="java.util.Map" resultMap="smileUserCheckDao"> <select id="selectUserCheck" parameterType="java.util.Map" resultMap="smileUserCheckDao">
SELECT SELECT
......
...@@ -46,65 +46,75 @@ public class SellDataInfoImpl { ...@@ -46,65 +46,75 @@ public class SellDataInfoImpl {
@Autowired @Autowired
private MongoTemplate mongoTemplate; private MongoTemplate mongoTemplate;
public void setData(){ public static void main(String[] args) {
//1、查到用户 }
List<SmileUser> list=smileUserMapper.selectUserList(null);
//mongoTemplate.remove(Query.query(Criteria.where("deltag").is(0)), SellDataVO.class, SellDataVO.class.getSimpleName());
for(SmileUser smileUser:list){
//-- 看这个人有哪些演出维度的订单 (支付的、演出id,该用户的。)
if(StringUtil.isNotBlank(smileUser.getUid())){
//获得6个月内演出
List<Map> list1=orderTicketsMapper.getUserOrder(smileUser.getUid());
for(Map a:list1){
String performanceId=a.get("yanchuId")==null?"":a.get("yanchuId").toString();
String yanChuName=a.get("title")==null?"":a.get("title").toString();
//获取 该人下 该演出id 的 所有订单
List<Map> list2=orderTicketsMapper.getUserSellOneDate(smileUser.getUid(),performanceId);
ArrayList<SellDataOneVO> listSellDataOneVo= ObjectUtil.getSellDataOneVOArrayList();
for(Map a1:list2){
SellDataOneVO sellDataOneVO=SellDataOneVO.getNew();
//票务类型
sellDataOneVO.setTicketName(a1.get("title")==null?"":a1.get("title").toString());
//数量
sellDataOneVO.setTicketNumber(a1.get("number")==null?0:Integer.parseInt(a1.get("number").toString()));
//总金额
sellDataOneVO.setSellPrice(new BigDecimal(a1.get("price")==null?"0":a1.get("price").toString()));
//票提
sellDataOneVO.setPiaoTi(new BigDecimal(a1.get("paioTi")==null?"":a1.get("paioTi").toString()));
//佣金
sellDataOneVO.setCommission(new BigDecimal(a1.get("commiss")==null?"0":a1.get("commiss").toString()));
sellDataOneVO.setTicketId(a1.get("ticketId")==null?"":a1.get("ticketId").toString());
listSellDataOneVo.add(sellDataOneVO);
if(StringUtils.isNotBlank(sellDataOneVO.getTicketId())){
setDataDetial(smileUser.getUid(),a1.get("ticketId").toString());
}
}
Map allDate=orderTicketsMapper.getUserSellAllDate(smileUser.getUid(),performanceId);
SellDataVO sellDataVO=SellDataVO.getNew();
if(null!=allDate){
//活动名称 需要再查 目前没有
sellDataVO.setDeltag(0);
sellDataVO.setSellDataId(smileUser.getUid().concat(performanceId));
sellDataVO.setActiveName(yanChuName);
sellDataVO.setSellAmount(new BigDecimal(allDate.get("price")==null?"0":allDate.get("price").toString()));
sellDataVO.setSellNumber(new BigDecimal(allDate.get("number")==null?"0":allDate.get("number").toString()));
sellDataVO.setTotalCommission(new BigDecimal(allDate.get("commiss")==null?"0":allDate.get("commiss").toString()));
sellDataVO.setSellDataOneVO(listSellDataOneVo);
//redis 里面放入
redisDataSourceUtil.getRedisSweetUtil().set(SmileRedisConst.SELL_DATA.concat(smileUser.getUid()).concat(performanceId),sellDataVO);
if(mongoTemplate.exists(Query.query(Criteria.where("sellDataId").is(sellDataVO.getSellDataId())), SellDataVO.class, SellDataVO.class.getSimpleName())){
mongoTemplate.remove(Query.query(Criteria.where("sellDataId").is(sellDataVO.getSellDataId())), SellDataVO.class, SellDataVO.class.getSimpleName());
}
//mongodb 里面放入
mongoTemplate.insert(sellDataVO,SellDataVO.class.getSimpleName());
}
}
}
public void setData(){
int count=smileUserMapper.getCount();
int page=(count/1000);
int pageSize=1;
for(int p=0;p<=page;p++){
int offest=p*pageSize;
List<SmileUser> list=smileUserMapper.pageUser(offest,pageSize);
userJob(list);
} }
} }
// 每个用户执行的
public void userJob( List<SmileUser> list){
for(SmileUser smileUser:list){
//-- 看这个人有哪些演出维度的订单 (支付的、演出id,该用户的。)
if(StringUtil.isNotBlank(smileUser.getUid())){
// //获取 该人 该演出 的所有订单 (6个月)
List<Map> list1=orderTicketsMapper.getUserOrder(smileUser.getUid());
for(Map a:list1){
String performanceId=a.get("yanchuId")==null?"":a.get("yanchuId").toString();
String yanChuName=a.get("title")==null?"":a.get("title").toString();
//获取 该人 该演出 的所有订单
List<Map> list2=orderTicketsMapper.getUserSellOneDate(smileUser.getUid(),performanceId);
ArrayList<SellDataOneVO> listSellDataOneVo= ObjectUtil.getSellDataOneVOArrayList();
for(Map a1:list2){
SellDataOneVO sellDataOneVO=SellDataOneVO.getNew();
//票务类型
sellDataOneVO.setTicketName(a1.get("title")==null?"":a1.get("title").toString());
//数量
sellDataOneVO.setTicketNumber(a1.get("number")==null?0:Integer.parseInt(a1.get("number").toString()));
//总金额
sellDataOneVO.setSellPrice(new BigDecimal(a1.get("price")==null?"0":a1.get("price").toString()));
//票提
sellDataOneVO.setPiaoTi(new BigDecimal(a1.get("paioTi")==null?"":a1.get("paioTi").toString()));
//佣金
sellDataOneVO.setCommission(new BigDecimal(a1.get("commiss")==null?"0":a1.get("commiss").toString()));
sellDataOneVO.setTicketId(a1.get("ticketId")==null?"":a1.get("ticketId").toString());
listSellDataOneVo.add(sellDataOneVO);
if(StringUtils.isNotBlank(sellDataOneVO.getTicketId())){
setDataDetial(smileUser.getUid(),a1.get("ticketId").toString());
}
}
Map allDate=orderTicketsMapper.getUserSellAllDate(smileUser.getUid(),performanceId);
SellDataVO sellDataVO=SellDataVO.getNew();
if(null!=allDate){
//活动名称 需要再查 目前没有
sellDataVO.setDeltag(0);
sellDataVO.setSellDataId(smileUser.getUid().concat(performanceId));
sellDataVO.setActiveName(yanChuName);
sellDataVO.setSellAmount(new BigDecimal(allDate.get("price")==null?"0":allDate.get("price").toString()));
sellDataVO.setSellNumber(new BigDecimal(allDate.get("number")==null?"0":allDate.get("number").toString()));
sellDataVO.setTotalCommission(new BigDecimal(allDate.get("commiss")==null?"0":allDate.get("commiss").toString()));
sellDataVO.setSellDataOneVO(listSellDataOneVo);
//redis 里面放入
redisDataSourceUtil.getRedisSweetUtil().set(SmileRedisConst.SELL_DATA.concat(smileUser.getUid()).concat(performanceId),sellDataVO);
if(mongoTemplate.exists(Query.query(Criteria.where("sellDataId").is(sellDataVO.getSellDataId())), SellDataVO.class, SellDataVO.class.getSimpleName())){
mongoTemplate.remove(Query.query(Criteria.where("sellDataId").is(sellDataVO.getSellDataId())), SellDataVO.class, SellDataVO.class.getSimpleName());
}
//mongodb 里面放入
mongoTemplate.insert(sellDataVO,SellDataVO.class.getSimpleName());
}
}
}
}
}
/** /**
* 设置票维度 的订单详情 * 设置票维度 的订单详情
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment