diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java index 27c724207..f11d8adff 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java @@ -144,26 +144,25 @@ public class WxCreditHistoryController extends BaseController { } } - //TODO 待优化数据 -// @ApiOperation("分页列表接口") -// @GetMapping("list") -// @ApiImplicitParams({ -// @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), -// @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) -// public ResultData list(@ModelAttribute WxCreditHistory wxCreditHistory, Integer pageNum, Integer pageSize) { -// log.debug("[" + getIpAddr() + "] WxCreditHistoryController::list"); -// if (null == wxCreditHistory) wxCreditHistory = new WxCreditHistory(); -// wxCreditHistory.setTenantId(getTenantInfo().getFinalTenantId()); -// wxCreditHistory.setFinalTenantId(getTenantInfo().getFinalTenantId()); -// WxMerchantBUser bUser = getLoginBUser(); -// WxMerchant merchant = wxMerchantService.getById(wxCreditHistory.getMerchantId()); -// if (merchant != null && merchant.getIsAdmin() != null && merchant.getIsAdmin() == 1) { -// wxCreditHistory.setOperatorId(bUser.getId()); -// wxCreditHistory.setOperatorType(EnumUserType.BUSER.getCode()); -// wxCreditHistory.setMerchantId(null); -// } -// final PageInfo page = wxCreditHistoryService.listAsPageMore(wxCreditHistory, pageNum, pageSize); -// return new ResultData(page); -// } + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), + @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) + public ResultData list(@ModelAttribute WxCreditHistory wxCreditHistory, Integer pageNum, Integer pageSize) { + log.debug("[" + getIpAddr() + "] WxCreditHistoryController::list"); + if (null == wxCreditHistory) wxCreditHistory = new WxCreditHistory(); + wxCreditHistory.setTenantId(getTenantInfo().getFinalTenantId()); + wxCreditHistory.setFinalTenantId(getTenantInfo().getFinalTenantId()); + WxMerchantBUser bUser = getLoginBUser(); + WxMerchant merchant = wxMerchantService.getById(wxCreditHistory.getMerchantId()); + if (merchant != null && merchant.getIsAdmin() != null && merchant.getIsAdmin() == 1) { + wxCreditHistory.setOperatorId(bUser.getId()); + wxCreditHistory.setOperatorType(EnumUserType.BUSER.getCode()); + wxCreditHistory.setMerchantId(null); + } + final PageInfo page = wxCreditHistoryService.listAsPageMore(wxCreditHistory, pageNum, pageSize); + return new ResultData(page); + } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCreditHistory.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCreditHistory.java index 4102c51e0..acc17b6fa 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCreditHistory.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCreditHistory.java @@ -43,6 +43,9 @@ public class WxCreditHistory extends BaseTenantEntity { @io.swagger.annotations.ApiModelProperty(value="用户ID",name="cUserId") private Long cUserId; + @TableField(exist = false) + private List cUserIds; + @io.swagger.annotations.ApiModelProperty(value="总积分",name="creditAmount") private Integer creditAmount; @io.swagger.annotations.ApiModelProperty(value="每笔积分明细",name="creditNum") @@ -57,8 +60,12 @@ public class WxCreditHistory extends BaseTenantEntity { private Integer operatorType; @io.swagger.annotations.ApiModelProperty(value="操作人ID",name="operatorId") private Long operatorId; + @io.swagger.annotations.ApiModelProperty(value="商户ID",name="merchantId") private Long merchantId; + @TableField(exist = false) + private List merchantIds; + @io.swagger.annotations.ApiModelProperty(value="券ID(积分兑换券时生成)",name="couponId") private Long couponId; @io.swagger.annotations.ApiModelProperty(value="业态ID(计算新增积分时使用)",name="businessId") @@ -81,6 +88,11 @@ public class WxCreditHistory extends BaseTenantEntity { @TableField(exist = false) @io.swagger.annotations.ApiModelProperty(value = "标签", name = "tags") private List tags; + + @TableField(exist = false) + private Integer begin; + @TableField(exist = false) + private Integer limit; public String getSpendStr() { if(getSpend()!=null) { diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCreditHistoryVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCreditHistoryVo.java index 1b0fff986..04d283223 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCreditHistoryVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCreditHistoryVo.java @@ -1,6 +1,8 @@ package com.iformall.domain.vo; import cn.afterturn.easypoi.excel.annotation.Excel; + +import com.iformall.domain.po.WxCreditHistory; import com.iformall.domain.po.base.BaseTenantEntity; import com.iformall.domain.po.base.TenantEntity; import lombok.Data; @@ -76,5 +78,21 @@ public class WxCreditHistoryVo extends BaseTenantEntity { @Excel(name = "说明", width = 20, orderNum = "11") @io.swagger.annotations.ApiModelProperty(value = "兑换用途", name = "changePurpose") private String changePurpose; + + public void initByCreditHistory(WxCreditHistory c) { + this.creditId = String.valueOf(c.getId()); + this.tenantId = c.getTenantId(); + this.cUserId = c.getCUserId(); + this.creditAmount = c.getCreditAmount(); + this.creditNum = c.getCreditNum(); + this.createDate = c.getCreateDate(); + this.creditType = c.getCreditType(); + this.receiptUrl = c.getReceiptUrl(); + this.operatorType = c.getOperatorType(); + this.operatorId = c.getOperatorId(); + this.merchantId = c.getMerchantId(); + this.ticketNumber = c.getTicketNumber(); + this.changePurpose = c.getChangePurpose(); + } } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java index 00ebed669..1df34b105 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java @@ -23,6 +23,7 @@ public interface WxCUserBasicInfoMapper extends CommonMapper findList1(@Param("tenantInfo")TenantEntity tenantInfo, @Param("basicInfo")WxCUserBasicInfo wxCUserBasicInfo); List findListPhoneAndNameByIds(WxCUserBasicInfo wxCUserBasicInfo); + List findIdList(WxCUserBasicInfo wxCUserBasicInfo); WxCUserBasicInfo selectById(@Param("id")Long id,@Param("finalTenantId")String finalTenantId); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java index f340aaf67..9f2d29fe8 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java @@ -16,7 +16,7 @@ public interface WxCreditHistoryMapper extends CommonMapper findList(WxCreditHistory wxCreditHistory); - List findListMore(WxCreditHistory wxCreditHistory); + List findListMore(WxCreditHistory wxCreditHistory); int loginCount(WxCreditHistory wxCreditHistory); diff --git a/mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java b/mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java index 10b0bac25..8dd31fd48 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java @@ -87,4 +87,6 @@ public interface WxCreditHistoryService { PageInfo listAsPageMcrv(WxCreditHistory record, Integer pageIndex, Integer pageSize); long getIncrementCreditAmount(WxCreditHistory wxCreditHistory); + + PageInfo findListMorePage(WxCreditHistory wxCreditHistory,Integer pageIndex, Integer pageSize); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java index 876cc7a9c..6efd2ef9e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java @@ -10,6 +10,7 @@ import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.BaseTenantEntity; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.msg.WxMsg; import com.iformall.domain.vo.MerchantCreditRankingVo; @@ -22,6 +23,8 @@ import com.iformall.utils.CreditUtil; import com.iformall.utils.RedisLock; import com.iformall.utils.UserUtil; import lombok.extern.slf4j.Slf4j; + +import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,8 +37,11 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -122,10 +128,209 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { @Override public void exportData(HttpServletRequest request, HttpServletResponse response, WxCreditHistory wxCreditHistory) { - List wxCreditHistoryVoList = wxCreditHistoryMapper.findListMore(wxCreditHistory); - excelService.exportExcel(wxCreditHistoryVoList, null, "积分变更记录", WxCreditHistoryVo.class, "积分变更记录.xlsx", response, false); + PageInfo wxCreditHistoryVoList = findListMorePage(wxCreditHistory,0,50000); + excelService.exportExcel(wxCreditHistoryVoList.getList(), null, "积分变更记录", WxCreditHistoryVo.class, "积分变更记录.xlsx", response, false); } + + + private Map getUserMap(BaseTenantEntity tenantEntity,List cUserIdList) { + Map userMap = new HashMap(); + if (cUserIdList.size() > 0) { + WxCUserBasicInfo cUserBasicInfoQ = new WxCUserBasicInfo(); + cUserBasicInfoQ.setFinalTenantId(tenantEntity.getFinalTenantId()); + cUserBasicInfoQ.setIds(cUserIdList); + List userList = wxCUserBasicInfoMapper.findListPhoneAndNameByIds(cUserBasicInfoQ); + if (null != userList) { + for (int i = 0 ; i < userList.size() ; i ++) { + WxCUserBasicInfo cbi = userList.get(i); + userMap.put(cbi.getId(), cbi); + } + } + } + return userMap; + } + + private Map getMerchantNameMap(BaseTenantEntity tenantEntity,List merchantIdList) { + Map merchantNameMap = new HashMap(); + if (merchantIdList.size() > 0) { + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(tenantEntity); + merchantQ.setIds(merchantIdList); + List merchantList = wxMerchantMapper.findIdNameList(merchantQ); + if (null != merchantList) { + for (int i = 0 ; i < merchantList.size() ; i ++) { + WxMerchant cbi = merchantList.get(i); + merchantNameMap.put(cbi.getId(), cbi.getName()); + } + } + } + return merchantNameMap; + } + + private Map getMallUserInfoOperatorMap(BaseTenantEntity tenantEntity,List mallUserInfoOperatorIdList) { + Map mallUserInfoOperatorMap = new HashMap(); + if (mallUserInfoOperatorIdList.size() > 0) { + MallUserInfo mallUserInfoQ = new MallUserInfo(); + mallUserInfoQ.updateTenantInfo(tenantEntity); + mallUserInfoQ.setIds(mallUserInfoOperatorIdList); + List userList = mallUserInfoMapper.findList(mallUserInfoQ); + if (null != userList) { + for (int i = 0 ; i < userList.size() ; i ++) { + MallUserInfo cbi = userList.get(i); + mallUserInfoOperatorMap.put(cbi.getId(), cbi.getName()); + } + } + } + return mallUserInfoOperatorMap; + } + + private Map getMerchantBUserOperatorMap(BaseTenantEntity tenantEntity,List merchantBUserOperatorIdList) { + Map merchantBUserOperatorMap = new HashMap(); + if (merchantBUserOperatorIdList.size() > 0) { + WxMerchantBUser merchantBUserQ = new WxMerchantBUser(); + merchantBUserQ.updateTenantInfo(tenantEntity); + merchantBUserQ.setIds(merchantBUserOperatorIdList); + List userList = wxMerchantBUserMapper.findSimpleList(null); + if (null != userList) { + for (int i = 0 ; i < userList.size() ; i ++) { + WxMerchantBUser cbi = userList.get(i); + merchantBUserOperatorMap.put(cbi.getId(), cbi.getName()); + } + } + } + return merchantBUserOperatorMap; + } + + private List creditHistoryToVoList(BaseTenantEntity tenantEntity,List credithistoryList) { + if (null != credithistoryList) { + + List merchantIdList = new ArrayList(); + List cUserIdList = new ArrayList(); + List mallUserInfoOperatorIdList = new ArrayList(); + List merchantBUserOperatorIdList = new ArrayList(); + List cUserBasicInfoOperatorIdList = new ArrayList(); + + for (int i = 0 ; i < credithistoryList.size() ; i++) { + WxCreditHistory creditHistory = credithistoryList.get(i); + Long cUserId = creditHistory.getCUserId(); + Long merchantId = creditHistory.getMerchantId(); + Long operatorId = creditHistory.getOperatorId(); + if (null != cUserId) { + if (!cUserIdList.contains(cUserId)) { + cUserIdList.add(cUserId); + } + } + if (null != merchantId) { + if (!merchantIdList.contains(merchantId)) { + merchantIdList.add(merchantId); + } + } + if (null != operatorId && null != creditHistory.getOperatorType()) { + if (creditHistory.getOperatorType() == 4) { + if (!mallUserInfoOperatorIdList.contains(operatorId)) { + mallUserInfoOperatorIdList.add(operatorId); + } + }else if (creditHistory.getOperatorType() == 3) { + if (!merchantBUserOperatorIdList.contains(operatorId)) { + merchantBUserOperatorIdList.add(operatorId); + } + }else if (creditHistory.getOperatorType() == 2) { + if (!cUserBasicInfoOperatorIdList.contains(operatorId)) { + cUserBasicInfoOperatorIdList.add(operatorId); + } + } + } + } + Map userMap = getUserMap(tenantEntity,cUserIdList); + Map merchantNameMap = getMerchantNameMap(tenantEntity,merchantIdList); + Map mallUserInfoOperatorMap = getMallUserInfoOperatorMap(tenantEntity,mallUserInfoOperatorIdList); + Map merchantBUserOperatorMap = getMerchantBUserOperatorMap(tenantEntity,merchantBUserOperatorIdList); + Map cUserBasicInfoOperatorMap = getUserMap(tenantEntity,cUserBasicInfoOperatorIdList); + + List retList = new ArrayList(); + for (int i = 0 ; i < credithistoryList.size() ; i++) { + WxCreditHistory creditHistory = credithistoryList.get(i); + WxCreditHistoryVo vo = new WxCreditHistoryVo(); + vo.initByCreditHistory(creditHistory); + if (null != vo.getCUserId()) { + WxCUserBasicInfo user = userMap.get(vo.getCUserId()); + if (null != user) { + String name = user.getNickName(); + if (StringUtils.isBlank(name)) { + name = user.getName(); + } + vo.setName(name); + if (null != user.getSex()) { + vo.setSex(String.valueOf(user.getSex())); + } + vo.setPhone(user.getPhone()); + } + } + vo.setMerchantName(merchantNameMap.get(vo.getMerchantId())); + if (null != vo.getOperatorId()) { + if (creditHistory.getOperatorType() == 4) { + vo.setOperator(mallUserInfoOperatorMap.get(vo.getOperatorId())); + }else if (creditHistory.getOperatorType() == 3) { + vo.setOperator(merchantBUserOperatorMap.get(vo.getOperatorId())); + }else if (creditHistory.getOperatorType() == 2) { + WxCUserBasicInfo bi = cUserBasicInfoOperatorMap.get(vo.getOperatorId()); + if (null != bi) { + String name = bi.getNickName(); + if (StringUtils.isBlank(name)) { + name = bi.getName(); + } + vo.setOperator(name); + } + }else { + vo.setOperator(""); + } + } + retList.add(vo); + } + return retList; + } + return null; + } + + @Override + public PageInfo findListMorePage(WxCreditHistory wxCreditHistory,Integer pageIndex, Integer pageSize) { + String merchantName = StringUtils.trimToNull(wxCreditHistory.getMerchantName()); + if(!StringUtils.isBlank(merchantName)) { + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(wxCreditHistory); + merchantQ.setName(merchantName); + List merchantIds = wxMerchantMapper.findIdList(merchantQ); + if (null != merchantIds && merchantIds.size() > 0 ) { + wxCreditHistory.setMerchantIds(merchantIds); + } + } + + String name = StringUtils.trimToNull(wxCreditHistory.getName()); + String phone = StringUtils.trimToNull(wxCreditHistory.getPhone()); + if (StringUtils.isBlank(name) && StringUtils.isBlank(phone)) { + }else { + WxCUserBasicInfo biq = new WxCUserBasicInfo(); + biq.setFinalTenantId(wxCreditHistory.getFinalTenantId()); + biq.setName(name); + biq.setPhone(phone); + List cUserIds = wxCUserBasicInfoMapper.findIdList(biq); + if (null != cUserIds && cUserIds.size() > 0 ) { + wxCreditHistory.setCUserIds(cUserIds); + } + } + + PageInfo pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCreditHistoryMapper.findListMore(wxCreditHistory)); + PageInfo retPageInfo = new PageInfo(); + retPageInfo.setPageNum(pageInfo.getPageNum()); + retPageInfo.setPageSize(pageInfo.getPageSize()); + retPageInfo.setPages(pageInfo.getPages()); + retPageInfo.setList(creditHistoryToVoList(wxCreditHistory,pageInfo.getList())); + return retPageInfo; + } + + + @Override public ResultData getCreditSummary(WxCreditHistory wxCreditHistory) { @@ -168,9 +373,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { @Override public PageInfo listAsPageMore(WxCreditHistory record, Integer pageIndex, Integer pageSize) { - PageHelper.startPage(pageIndex, pageSize); - List wxCreditHistoryVoList = wxCreditHistoryMapper.findListMore(record); - return new PageInfo<>(wxCreditHistoryVoList); + return findListMorePage(record,pageIndex,pageSize); } // public void supplyCreditInfo(List wxCreditHistoryVoList) { diff --git a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml index f53b74d9d..ddbea7775 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml @@ -45,16 +45,12 @@ - where 1 = 1 + where wcubi.`final_tenant_id` = #{finalTenantId} and wcubi.`id` = #{id} - - and wcubi.`final_tenant_id` = #{finalTenantId} - - and wcubi.`phone` like concat('%', #{phone},'%') @@ -244,7 +240,7 @@ + + - SELECT - credit.id creditId, - case when basic.nick_name is null then basic.name else basic.nick_name end name, - basic.phone phone, - basic.sex sex, - credit.tenant_id tenantId, - credit.c_user_id cUserId, - credit.credit_amount creditAmount, - credit.credit_num creditNum, - credit.create_date createDate, - credit.credit_type creditType, - credit.receipt_url receiptUrl, - credit.operator_type operatorType, - credit.operator_id operatorId, - merchant.NAME merchantName, - credit.merchant_id merchantId, - credit.ticket_number ticketNumber, - case when credit.operator_type=4 then (select name from mall_user_info where id=credit.operator_id) - when credit.operator_type=3 then (select name from wx_merchant_b_user where id=credit.operator_id) - when credit.operator_type=2 then (select nick_name from wx_c_user_basic_info where id=credit.operator_id) - else '' end operator, - credit.change_purpose changePurpose - FROM - wx_c_user_basic_info basic - INNER JOIN wx_credit_history credit ON basic.id = credit.c_user_id - LEFT JOIN wx_merchant merchant ON credit.merchant_id = merchant.id - - ORDER BY - credit.create_date desc,credit.id DESC + credit.id ,credit.tenant_id ,credit.c_user_id ,credit.credit_amount ,credit.credit_num,credit.create_date,credit.credit_type,credit.receipt_url , + credit.operator_type,credit.operator_id,credit.merchant_id,credit.ticket_number,credit.change_purpose + FROM wx_credit_history credit + where credit.`tenant_id` = #{tenantId} + + and credit.create_date >= #{startTime} + + + and credit.create_date < #{endTime} + + + and credit.operator_type = #{operatorType} + + + and credit.operator_id = #{operatorId} + + + and credit.credit_type = #{creditType} + + + and credit.c_user_id = #{cUserId} + + + and credit.merchant_id = #{merchantId} + + + and credit.ticket_number like concat('%', #{ticketNumber},'%') + + + and credit.buser_id = #{buserId} + + + + and credit.merchantId in + + #{merchantIdItem} + + + + + and credit.c_user_id in + + #{cUserIdItem} + + + ORDER BY credit.id DESC + + limit #{begin}, #{limit} + - +