From 083153fefa08215596b4f8e471499e06bfc79084 Mon Sep 17 00:00:00 2001 From: hupeng Date: Wed, 7 Nov 2018 19:43:37 +0800 Subject: [PATCH] =?UTF-8?q?[A=E7=AB=AF][=E6=96=B0=E5=A2=9E]:=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=AB=AF=E5=B1=95=E7=A4=BA=E6=AF=8F=E6=97=A5=E8=A7=A3?= =?UTF-8?q?=E5=8D=95=E9=87=91=E9=A2=9D=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WxMerchantTradeDailyController.java | 57 ++--- .../domain/po/WxMerchantTradeDaily.java | 11 + .../domain/vo/WxMerchantTradeDailyVo.java | 219 ++++++++++++++++++ .../mapper/WxMerchantTradeDailyMapper.java | 10 +- .../service/WxMerchantTradeDailyService.java | 27 ++- .../impl/WxMerchantTradeDailyServiceImpl.java | 54 ++++- .../mapper/WxMerchantTradeDailyMapper.xml | 78 ++++++- 7 files changed, 399 insertions(+), 57 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantTradeDailyVo.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantTradeDailyController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantTradeDailyController.java index 5271dc44b..976f38eb1 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantTradeDailyController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantTradeDailyController.java @@ -1,9 +1,9 @@ package com.iformall.controller; import com.github.pagehelper.PageInfo; -import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.WxMerchantTradeDaily; +import com.iformall.domain.vo.WxMerchantTradeDailyVo; import com.iformall.service.WxMerchantTradeDailyService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -13,6 +13,10 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + @RestController @RequestMapping("wxMerchantTradeDaily") public class WxMerchantTradeDailyController extends BaseController { @@ -21,46 +25,29 @@ public class WxMerchantTradeDailyController extends BaseController { @Autowired private WxMerchantTradeDailyService wxMerchantTradeDailyService; - @ApiOperation("分页列表接口") - @GetMapping("list") + + + @ApiOperation("获得昨日解单列表") + @GetMapping("/listYesterday") @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 WxMerchantTradeDaily wxMerchantTradeDaily, Integer pageNum, Integer pageSize) { - if (null == wxMerchantTradeDaily) wxMerchantTradeDaily = new WxMerchantTradeDaily(); - final PageInfo page = wxMerchantTradeDailyService.listAsPage(wxMerchantTradeDaily, pageNum, pageSize); + public ResultData listYesterday(@ModelAttribute WxMerchantTradeDailyVo wxMerchantTradeDaily, Integer pageNum, Integer pageSize) { + if (wxMerchantTradeDaily == null) wxMerchantTradeDaily = new WxMerchantTradeDailyVo(); + wxMerchantTradeDaily.setTenantId(getTenantId()); + Calendar cal = Calendar.getInstance(); + cal.setTime(new Date()); + cal.add(Calendar.DAY_OF_YEAR, -1); + SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd"); + wxMerchantTradeDaily.setReportDate(fmt.format(cal.getTime())); + final PageInfo page = wxMerchantTradeDailyService.listAsPageVo(wxMerchantTradeDaily, pageNum, pageSize); return new ResultData(page); } - @ApiOperation("新增接口") - @PostMapping("add") - public ResultData add(@RequestBody WxMerchantTradeDaily wxMerchantTradeDaily) { - //Assert.notNull(wxMerchantTradeDaily.getName(), "角色名不能为空"); - //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); - wxMerchantTradeDailyService.saveOrUpdate(wxMerchantTradeDaily); - return new ResultData(); - } - - @ApiOperation("根据id更新接口") - @PostMapping("update") - public ResultData update(@RequestBody WxMerchantTradeDaily wxMerchantTradeDaily) { - wxMerchantTradeDailyService.saveOrUpdate(wxMerchantTradeDaily); - return new ResultData(); - } - - @ApiOperation("根据id删除接口") - @GetMapping("/del") - @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - public ResultData delete(Long id) { - wxMerchantTradeDailyService.deleteById(id); - return new ResultData(Result.SUCCESS, "删除成功", null); - } - - @ApiOperation("根据id查询接口") - @GetMapping("/findById") - @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - public ResultData findById(Long id) { - return new ResultData(Result.SUCCESS, "查询成功", wxMerchantTradeDailyService.getById(id)); + @ApiOperation("获得近30日解单") + @GetMapping("/detail") + public ResultData detail(Long merchantId) { + return wxMerchantTradeDailyService.getVolumeOfMonth(merchantId); } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantTradeDaily.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantTradeDaily.java index 9fd4994de..75f8d3099 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantTradeDaily.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantTradeDaily.java @@ -46,6 +46,9 @@ public class WxMerchantTradeDaily implements Serializable { /*商户id**/ @io.swagger.annotations.ApiModelProperty(value = "商户id", name = "merchantId") private Long merchantId; + /*b用户id**/ + @io.swagger.annotations.ApiModelProperty(value = "b用户id", name = "bUserId") + private Long bUserId; /*交易额**/ @io.swagger.annotations.ApiModelProperty(value = "交易额", name = "tradeAmt") private Integer tradeAmt; @@ -75,6 +78,14 @@ public class WxMerchantTradeDaily implements Serializable { merchantId = _merchantId; } + public Long getbUserId() { + return bUserId; + } + + public void setbUserId(Long bUserId) { + this.bUserId = bUserId; + } + public Integer getTradeAmt() { return tradeAmt; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantTradeDailyVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantTradeDailyVo.java new file mode 100644 index 000000000..110821fa9 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantTradeDailyVo.java @@ -0,0 +1,219 @@ +package com.iformall.domain.vo; + +import javax.persistence.Id; + +import javax.persistence.Transient; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +public class WxMerchantTradeDailyVo implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + protected Long id; + + @Transient + protected List ids; + @Transient + protected String sortColumns; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getSortColumns() { + return sortColumns; + } + + public List getIds() { + return ids; + } + + public void setIds(List ids) { + this.ids = ids; + } + + + /*租户ID**/ + @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId") + private String tenantId; + /*商户id**/ + @io.swagger.annotations.ApiModelProperty(value = "商户id", name = "merchantId") + private Long merchantId; + /*b用户id**/ + @io.swagger.annotations.ApiModelProperty(value = "b用户id", name = "bUserId") + private Long bUserId; + /*交易额**/ + @io.swagger.annotations.ApiModelProperty(value = "交易额", name = "tradeAmt") + private Integer tradeAmt; + /*提交日期**/ + @io.swagger.annotations.ApiModelProperty(value = "解单提交日期", name = "createDate") + private Date createDate; + /*更新日期**/ + @io.swagger.annotations.ApiModelProperty(value = "解单更新日期", name = "updateDate") + private Date updateDate; + /*解单日期**/ + @io.swagger.annotations.ApiModelProperty(value = "解单日期", name = "reportDate") + private String reportDate; + + + /*商户名**/ + @io.swagger.annotations.ApiModelProperty(value="商户名",name="merchantName") + private String merchantName; + + /*b端用户姓名**/ + @io.swagger.annotations.ApiModelProperty(value = "b端用户姓名", name = "bUserName") + private String bUserName; + + /*B端用户手机号**/ + @io.swagger.annotations.ApiModelProperty(value = "B端用户手机号", name = "bUserPhone") + private String bUserPhone; + + + + public String getMerchantName() { + return merchantName; + } + + public void setMerchantName(String merchantName) { + this.merchantName = merchantName; + } + + public String getbUserName() { + return bUserName; + } + + public void setbUserName(String bUserName) { + this.bUserName = bUserName; + } + + public String getbUserPhone() { + return bUserPhone; + } + + public void setbUserPhone(String bUserPhone) { + this.bUserPhone = bUserPhone; + } + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String _tenantId) { + tenantId = _tenantId; + } + + public Long getMerchantId() { + return merchantId; + } + + public void setMerchantId(Long _merchantId) { + merchantId = _merchantId; + } + + + public Long getbUserId() { + return bUserId; + } + + public void setbUserId(Long bUserId) { + this.bUserId = bUserId; + } + public Integer getTradeAmt() { + return tradeAmt; + } + + public void setTradeAmt(Integer _tradeAmt) { + tradeAmt = _tradeAmt; + } + + public Date getCreateDate() { + return createDate; + } + + public void setCreateDate(Date _createDate) { + createDate = _createDate; + } + + public Date getUpdateDate() { + return updateDate; + } + + public void setUpdateDate(Date _updateDate) { + updateDate = _updateDate; + } + + public String getReportDate() { + return reportDate; + } + + public void setReportDate(String _reportDate) { + reportDate = _reportDate; + } + + + public static enum Field { + Id_ASC("`id` ASC"), Id_DESC("`id` DESC"), + TenantId_ASC("`tenant_id` ASC"), TenantId_DESC("`tenant_id` DESC"), + MerchantId_ASC("`merchant_id` ASC"), MerchantId_DESC("`merchant_id` DESC"), + TradeAmt_ASC("`trade_amt` ASC"), TradeAmt_DESC("`trade_amt` DESC"), + CreateDate_ASC("`create_date` ASC"), CreateDate_DESC("`create_date` DESC") + ; + private String value; + + Field(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + public void setCol(String value) { + this.value = value; + } + + @Override + public String toString() { + return this.getValue(); + } + } + + public void setSortColumns(WxMerchantTradeDailyVo.Field... fields) { + if (fields == null || fields.length == 0) { + return; + } + for (int k = 0; k < fields.length; k++) { + if (fields[k] == null) { + return; + } + } + StringBuilder sb = new StringBuilder(fields[0].toString()); + for (int k = 1; k < fields.length; k++) { + sb.append(","); + sb.append(fields[k].toString()); + } + this.sortColumns = sb.toString(); + } + + public void setSortColumns(String sortColumns) { + if (sortColumns == null || "".equals(sortColumns.trim())) { + return; + } + if (sortColumns.contains(",")) { + String[] cols = sortColumns.split(","); + List fList = new java.util.ArrayList(); + for (int k = 0; k < cols.length; k++) { + fList.add(Field.valueOf(cols[k])); + } + this.setSortColumns(fList.toArray(new Field[fList.size()])); + } else { + this.setSortColumns(Field.valueOf(sortColumns)); + } + } +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantTradeDailyMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantTradeDailyMapper.java index c207d5986..c5f67215d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantTradeDailyMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantTradeDailyMapper.java @@ -3,14 +3,16 @@ package com.iformall.mapper; import java.util.*; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxMerchantTradeDaily; +import com.iformall.domain.vo.WxMerchantTradeDailyVo; public interface WxMerchantTradeDailyMapper extends CommonMapper { List findList(WxMerchantTradeDaily wxMerchantTradeDaily); - List findListOfWeek(WxMerchantTradeDaily wxMerchantTradeDaily); - - - + + List findListVo(WxMerchantTradeDailyVo wxMerchantTradeDaily); + + List findListVoOfMonth(WxMerchantTradeDaily wxMerchantTradeDaily); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxMerchantTradeDailyService.java b/mallinkService/src/main/java/com/iformall/service/WxMerchantTradeDailyService.java index 9b020e5a6..00840e790 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMerchantTradeDailyService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMerchantTradeDailyService.java @@ -3,6 +3,7 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.WxMerchantTradeDaily; +import com.iformall.domain.vo.WxMerchantTradeDailyVo; public interface WxMerchantTradeDailyService { @@ -46,20 +47,36 @@ public interface WxMerchantTradeDailyService { * @param volume */ - public ResultData saveDailyTradingVolume(Long userId, Integer volume); + ResultData saveDailyTradingVolume(Long userId, Integer volume); /** * 获取当日解单数据 */ - public ResultData getVolume(Long userId); + ResultData getVolume(Long userId); /** * 获取近7日解单数据 */ - public ResultData getVolumeOfWeek(Long userId); - - + ResultData getVolumeOfWeek(Long userId); + + + /** + * 获取近30日解单数据 ADMIN 端 + */ + ResultData getVolumeOfMonth(Long merchantId); + + + /** + * 根据实体查询分页列表 + * + * @param record + * @param offset + * @param limit + * @return + */ + PageInfo listAsPageVo(WxMerchantTradeDailyVo record, Integer pageIndex, Integer pageSize); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java index 92a10e8d0..2c1f5bc14 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java @@ -2,6 +2,8 @@ package com.iformall.service.impl; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; + import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; @@ -10,6 +12,7 @@ import com.iformall.domain.po.WxMall; import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.WxMerchantTradeDaily; +import com.iformall.domain.vo.WxMerchantTradeDailyVo; import com.iformall.mapper.WxMerchantTradeDailyMapper; import com.iformall.service.WxMerchantTradeDailyService; import com.iformall.service.WxMallService; @@ -18,6 +21,7 @@ import com.iformall.service.WxMerchantService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.security.SecurityProperties; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @@ -104,6 +108,7 @@ public class WxMerchantTradeDailyServiceImpl implements WxMerchantTradeDailyServ wxMerchantTradeDaily.setId(idWorker.nextId()); wxMerchantTradeDaily.setTenantId(merchant.getTenantId()); wxMerchantTradeDaily.setMerchantId(merchant.getId()); + wxMerchantTradeDaily.setbUserId(userId); wxMerchantTradeDaily.setTradeAmt(volume); wxMerchantTradeDaily.setCreateDate(new Date()); wxMerchantTradeDaily.setUpdateDate(new Date()); @@ -113,6 +118,46 @@ public class WxMerchantTradeDailyServiceImpl implements WxMerchantTradeDailyServ } + + @Override + public PageInfo listAsPageVo(WxMerchantTradeDailyVo record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMerchantTradeDailyMapper.findListVo(record)); + } + + @Override + public ResultData getVolumeOfMonth(Long merchantId) { + + WxMerchant merchant = wxMerchantService.getById(merchantId); + if (merchant==null) + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); + WxMerchantTradeDaily wxMerchantTradeDaily = new WxMerchantTradeDaily(); + wxMerchantTradeDaily.setMerchantId(merchantId); + + List recordList = wxMerchantTradeDailyMapper.findListVoOfMonth(wxMerchantTradeDaily); + Map recordMap = recordList.stream().collect(Collectors.toMap(WxMerchantTradeDailyVo::getReportDate, r -> r)); + + List tradeList = new ArrayList<>(); + Calendar cal = Calendar.getInstance(); + SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat fmtv = new SimpleDateFormat("MM/dd"); + cal.setTime(new Date()); + for (int i = 0; i < 30; i++) { + cal.add(Calendar.DAY_OF_YEAR, -1); + WxMerchantTradeDailyVo trade = recordMap.get(fmt.format(cal.getTime())); + if (trade != null){ + trade.setReportDate(fmtv.format(cal.getTime())); + tradeList.add(trade); + }else { + trade = new WxMerchantTradeDailyVo(); + trade.setTradeAmt(0); + trade.setReportDate(fmtv.format(cal.getTime())); + tradeList.add(trade); + } + } + + return new ResultData(tradeList); + } + @Override public ResultData getVolume(Long userId) { @@ -175,14 +220,7 @@ public class WxMerchantTradeDailyServiceImpl implements WxMerchantTradeDailyServ SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd"); wxMerchantTradeDaily.setReportDate(fmt.format(new Date())); - - List tradeList = wxMerchantTradeDailyMapper.findListOfWeek(wxMerchantTradeDaily); - - if (tradeList.size() > 0 ) { - return new ResultData(tradeList); - } - - return new ResultData(ErrorCode.DALIY_REPORT_VOLUME_WEEK_NULL); + return new ResultData(wxMerchantTradeDailyMapper.findListOfWeek(wxMerchantTradeDaily)); } diff --git a/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml index cbbeb502f..473622515 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml @@ -5,6 +5,7 @@ + @@ -12,7 +13,7 @@ - `id`,`tenant_id`,`merchant_id`,`trade_amt`,`create_date`,`update_date`,`report_date` + `id`,`tenant_id`,`merchant_id`,`b_user_id`,`trade_amt`,`create_date`,`update_date`,`report_date` @@ -31,8 +32,13 @@ and `merchant_id` = #{merchantId} - - + + + + and `b_user_id` = #{bUserId} + + + and `trade_amt` = #{tradeAmt} @@ -81,8 +87,70 @@ order by create_date desc LIMIT 7 - - + + + + + + + + + + + + + + + + + + + mtd.id as id, mtd.tenant_id as tenant_id, mtd.merchant_id as merchant_id, mtd.b_user_id as b_user_id,`trade_amt`,mtd.create_date as create_date,mtd.update_date as update_date,`report_date`, m.name as merchant_name, mbu.name as b_user_name, mbu.phone as b_user_phone + + + + +