| @@ -2,13 +2,17 @@ package com.iformall.controller.app; | |||||
| import cn.binarywang.wx.miniapp.api.WxMaService; | import cn.binarywang.wx.miniapp.api.WxMaService; | ||||
| import cn.binarywang.wx.miniapp.bean.WxMaCodeLineColor; | import cn.binarywang.wx.miniapp.bean.WxMaCodeLineColor; | ||||
| import com.amazonaws.services.s3.model.ObjectMetadata; | |||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| import com.iformall.common.Result; | import com.iformall.common.Result; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.controller.base.BaseController; | import com.iformall.controller.base.BaseController; | ||||
| import com.iformall.controller.sys.UploadController; | |||||
| import com.iformall.domain.po.WxAppinfo; | import com.iformall.domain.po.WxAppinfo; | ||||
| import com.iformall.domain.po.WxMerchant; | |||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.mapper.WxMerchantMapper; | |||||
| import com.iformall.service.WxAppinfoService; | import com.iformall.service.WxAppinfoService; | ||||
| import com.iformall.service.wechat.FmOpenService; | import com.iformall.service.wechat.FmOpenService; | ||||
| import com.iformall.utils.Constant; | import com.iformall.utils.Constant; | ||||
| @@ -23,14 +27,15 @@ import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import org.springframework.web.multipart.MultipartFile; | |||||
| import javax.servlet.ServletException; | |||||
| import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
| import java.io.File; | |||||
| import java.io.FileInputStream; | |||||
| import java.io.IOException; | |||||
| import java.io.InputStream; | |||||
| import java.io.*; | |||||
| import java.util.List; | |||||
| import java.util.Map; | import java.util.Map; | ||||
| import java.util.UUID; | |||||
| @RestController | @RestController | ||||
| @RequestMapping("wxAppinfo") | @RequestMapping("wxAppinfo") | ||||
| @@ -46,6 +51,31 @@ public class WxAppinfoController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private FmOpenService openService; | private FmOpenService openService; | ||||
| @Autowired | |||||
| private WxMerchantMapper wxMerchantMapper; | |||||
| @Autowired | |||||
| private UploadController uploadController; | |||||
| @ApiOperation("加载二维码") | |||||
| @GetMapping("/updateQrCode") | |||||
| public void updateQrCode(String p)throws ServletException, IOException { | |||||
| if("xlldxx".equals(p)){ | |||||
| String pageUrl = "pages/index/index"; | |||||
| List<WxMerchant> list = wxMerchantMapper.findQrcodeEmptyList(); | |||||
| for (WxMerchant merchant:list) { | |||||
| String param = "t:md:"+merchant.getId(); | |||||
| ResultData resultData = this.exportQrcode(null,null,merchant.getTenantId(),1,pageUrl,param,0,"","","店铺详情",true); | |||||
| Map<String,String> map = (Map)resultData.data; | |||||
| String url = map.get("url"); | |||||
| merchant.setQrCode(url); | |||||
| System.out.println("---"+merchant.getId()); | |||||
| wxMerchantMapper.updateByPrimaryKeySelective(merchant); | |||||
| } | |||||
| } | |||||
| } | |||||
| @ApiOperation(value = "下载二维码", produces="application/json;charset=UTF-8", notes = "参数{\"name\":\"String\",\"pageUrl\":\"String\", \"sceneParam\":\"二维码参数\", \"type\":0:有限二维码,1:无限二维码,\"withText\":int(0:不带字, 1:加一行字,2:加两行字),\"text1\":\"String\",\"text2\":\"String\"}") | @ApiOperation(value = "下载二维码", produces="application/json;charset=UTF-8", notes = "参数{\"name\":\"String\",\"pageUrl\":\"String\", \"sceneParam\":\"二维码参数\", \"type\":0:有限二维码,1:无限二维码,\"withText\":int(0:不带字, 1:加一行字,2:加两行字),\"text1\":\"String\",\"text2\":\"String\"}") | ||||
| @PostMapping("/downQrCode") | @PostMapping("/downQrCode") | ||||
| public void downQrCode(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> params) throws MallinkException { | public void downQrCode(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> params) throws MallinkException { | ||||
| @@ -75,17 +105,17 @@ public class WxAppinfoController extends BaseController { | |||||
| exportQrcode(request, response, | exportQrcode(request, response, | ||||
| getTenantId(), type, pageUrl, sceneParam, | getTenantId(), type, pageUrl, sceneParam, | ||||
| withText, text1, text2, | withText, text1, text2, | ||||
| name); | |||||
| name,false); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error(e.getMessage()); | logger.error(e.getMessage()); | ||||
| throw new MallinkException(Result.ERROR, "下载异常"); | throw new MallinkException(Result.ERROR, "下载异常"); | ||||
| } | } | ||||
| } | } | ||||
| private void exportQrcode(HttpServletRequest request, HttpServletResponse response, | |||||
| private ResultData exportQrcode(HttpServletRequest request, HttpServletResponse response, | |||||
| String tenantId, int type, String pageUrl, String sceneParam, | String tenantId, int type, String pageUrl, String sceneParam, | ||||
| int withText, String text1, String text2, | int withText, String text1, String text2, | ||||
| String name) { | |||||
| String name,boolean upload) { | |||||
| // type 0 有限二维码, 1 无限制二维码 | // type 0 有限二维码, 1 无限制二维码 | ||||
| // withText 0 不带字 1. 带下面的字,2 带下面的两行字 | // withText 0 不带字 1. 带下面的字,2 带下面的两行字 | ||||
| WxAppinfo appinfo = wxAppinfoService.getCAppInfo(tenantId); | WxAppinfo appinfo = wxAppinfoService.getCAppInfo(tenantId); | ||||
| @@ -160,12 +190,33 @@ public class WxAppinfoController extends BaseController { | |||||
| } | } | ||||
| try { | try { | ||||
| //上传 | |||||
| if (upload){ | |||||
| ObjectMetadata metadata = new ObjectMetadata(); | |||||
| metadata.setContentType("image/jpeg"); | |||||
| metadata.setContentLength(dest.length()); | |||||
| FileOutputStream fos = null; | |||||
| BufferedInputStream fs = null; | |||||
| String fn = UUID.randomUUID().toString(); | |||||
| int dot = fileName.lastIndexOf('.'); | |||||
| if (dot >= 0) { | |||||
| fn = tenantId + "/" + fn + dest.getName().substring(dot, dest.getName().length()); | |||||
| } else { | |||||
| fn = tenantId + "/" + fn; | |||||
| } | |||||
| ResultData data = uploadController.awsUpload(new FileInputStream(dest), metadata, fn, getTenantId()); | |||||
| return data; | |||||
| } | |||||
| downFile(destPath, fileName, response, request); | downFile(destPath, fileName, response, request); | ||||
| org.apache.commons.io.FileUtils.forceDelete(dest); | org.apache.commons.io.FileUtils.forceDelete(dest); | ||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error(e.getMessage()); | logger.error(e.getMessage()); | ||||
| } | } | ||||
| return new ResultData(); | |||||
| } | } | ||||
| private void downFile(String filePath, String filename, HttpServletResponse response, HttpServletRequest req) throws IOException { | private void downFile(String filePath, String filename, HttpServletResponse response, HttpServletRequest req) throws IOException { | ||||
| @@ -39,6 +39,13 @@ public class WxMerchantTradeDailyController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private WxMerchantService wxMerchantService; | private WxMerchantService wxMerchantService; | ||||
| @ApiOperation("获得指定日期的解单,默认不传reportDate为当天") | |||||
| @GetMapping("/getVolume") | |||||
| public ResultData getVolume(WxMerchantTradeDaily wxMerchantTradeDaily) { | |||||
| wxMerchantTradeDaily.setTenantId(getTenantId()); | |||||
| return wxMerchantTradeDailyService.getVolume(wxMerchantTradeDaily,getUser().getId()); | |||||
| } | |||||
| @ApiOperation("获得昨日解单列表") | @ApiOperation("获得昨日解单列表") | ||||
| @GetMapping("/listYesterday") | @GetMapping("/listYesterday") | ||||
| @@ -11,6 +11,7 @@ import com.iformall.domain.vo.MallUserInfoVo; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.annotation.SystemControllerLog; | import com.iformall.annotation.SystemControllerLog; | ||||
| import com.iformall.mapper.WxMerchantMapper; | |||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.shiro.UserSession; | import com.iformall.shiro.UserSession; | ||||
| import com.iformall.shiro.UseriFormallToken; | import com.iformall.shiro.UseriFormallToken; | ||||
| @@ -28,6 +28,7 @@ import org.springframework.web.multipart.MultipartFile; | |||||
| import java.io.BufferedInputStream; | import java.io.BufferedInputStream; | ||||
| import java.io.FileOutputStream; | import java.io.FileOutputStream; | ||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.io.InputStream; | |||||
| import java.net.URL; | import java.net.URL; | ||||
| import java.util.*; | import java.util.*; | ||||
| @@ -46,7 +47,7 @@ public class UploadController extends BaseController { | |||||
| private AmazonS3 s3 = null; | private AmazonS3 s3 = null; | ||||
| private ResultData awsUpload(MultipartFile multiReq, ObjectMetadata metadata, String fileName, String tenantId) { | |||||
| public ResultData awsUpload(InputStream inputStream, ObjectMetadata metadata, String fileName, String tenantId) { | |||||
| ResultData data = new ResultData(); | ResultData data = new ResultData(); | ||||
| try { | try { | ||||
| if(s3 == null) { | if(s3 == null) { | ||||
| @@ -67,7 +68,7 @@ public class UploadController extends BaseController { | |||||
| } | } | ||||
| s3.putObject( | s3.putObject( | ||||
| new PutObjectRequest(awsProperty.getBucketName(), fileName, multiReq.getInputStream(), metadata) | |||||
| new PutObjectRequest(awsProperty.getBucketName(), fileName, inputStream, metadata) | |||||
| .withCannedAcl(CannedAccessControlList.PublicRead)); | .withCannedAcl(CannedAccessControlList.PublicRead)); | ||||
| URL url = s3.getUrl(awsProperty.getBucketName(), fileName); | URL url = s3.getUrl(awsProperty.getBucketName(), fileName); | ||||
| logger.info(url.toString()); | logger.info(url.toString()); | ||||
| @@ -102,7 +103,7 @@ public class UploadController extends BaseController { | |||||
| logger.warn("Error Message: " + ace.getMessage()); | logger.warn("Error Message: " + ace.getMessage()); | ||||
| data.code = ResultData.ERROR; | data.code = ResultData.ERROR; | ||||
| data.message = "上传失败"; | data.message = "上传失败"; | ||||
| } catch (IOException ioe) { | |||||
| } catch (Exception ioe) { | |||||
| data.code = ResultData.ERROR; | data.code = ResultData.ERROR; | ||||
| logger.warn("Caught an IOException: " + ioe.getMessage()); | logger.warn("Caught an IOException: " + ioe.getMessage()); | ||||
| data.code = ResultData.ERROR; | data.code = ResultData.ERROR; | ||||
| @@ -120,7 +121,7 @@ public class UploadController extends BaseController { | |||||
| */ | */ | ||||
| @PostMapping(value = "/awsFileUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") | @PostMapping(value = "/awsFileUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") | ||||
| @ApiOperation("上传文件") | @ApiOperation("上传文件") | ||||
| public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) { | |||||
| public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) throws Exception{ | |||||
| logger.info("[" + getIpAddr() + "] UploadController::awsfileUpload"); | logger.info("[" + getIpAddr() + "] UploadController::awsfileUpload"); | ||||
| ObjectMetadata metadata = new ObjectMetadata(); | ObjectMetadata metadata = new ObjectMetadata(); | ||||
| @@ -138,7 +139,8 @@ public class UploadController extends BaseController { | |||||
| fileName = getTenantId() + "/" + fileName; | fileName = getTenantId() + "/" + fileName; | ||||
| } | } | ||||
| ResultData data = awsUpload(multiReq, metadata, fileName, getTenantId()); | |||||
| System.out.println(fileName); | |||||
| ResultData data = awsUpload(multiReq.getInputStream(), metadata, fileName, getTenantId()); | |||||
| return data; | return data; | ||||
| } | } | ||||
| @@ -151,7 +153,7 @@ public class UploadController extends BaseController { | |||||
| */ | */ | ||||
| @PostMapping(value = "/awsFilesUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") | @PostMapping(value = "/awsFilesUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") | ||||
| @ApiOperation("多文件上传") | @ApiOperation("多文件上传") | ||||
| public ResultData awsFilesUpload(@RequestParam("files") MultipartFile[] files) { | |||||
| public ResultData awsFilesUpload(@RequestParam("files") MultipartFile[] files) throws Exception{ | |||||
| logger.info("[" + getIpAddr() + "] UploadController::awsFilesUpload"); | logger.info("[" + getIpAddr() + "] UploadController::awsFilesUpload"); | ||||
| if(files.length > 0){ | if(files.length > 0){ | ||||
| @@ -177,7 +179,7 @@ public class UploadController extends BaseController { | |||||
| fileName = getTenantId() + "/" + fileName; | fileName = getTenantId() + "/" + fileName; | ||||
| } | } | ||||
| ResultData data1 = awsUpload(multipartFile, metadata, fileName, getTenantId()); | |||||
| ResultData data1 = awsUpload(multipartFile.getInputStream(), metadata, fileName, getTenantId()); | |||||
| if(data1.code == ResultData.SUCCESS) { | if(data1.code == ResultData.SUCCESS) { | ||||
| Map _data = (Map)data1.data; | Map _data = (Map)data1.data; | ||||
| map.put("url", (String) _data.get("url")); | map.put("url", (String) _data.get("url")); | ||||
| @@ -206,7 +208,7 @@ public class UploadController extends BaseController { | |||||
| */ | */ | ||||
| @PostMapping(value = "/cimgUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") | @PostMapping(value = "/cimgUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") | ||||
| @ApiOperation("C端上传图片文件") | @ApiOperation("C端上传图片文件") | ||||
| public ResultData cimgUpload(@RequestParam("file") MultipartFile multiReq) { | |||||
| public ResultData cimgUpload(@RequestParam("file") MultipartFile multiReq) throws Exception{ | |||||
| logger.info("[" + getIpAddr() + "] UploadController::cimgUpload"); | logger.info("[" + getIpAddr() + "] UploadController::cimgUpload"); | ||||
| ObjectMetadata metadata = new ObjectMetadata(); | ObjectMetadata metadata = new ObjectMetadata(); | ||||
| @@ -215,7 +217,7 @@ public class UploadController extends BaseController { | |||||
| String fileName = multiReq.getOriginalFilename(); | String fileName = multiReq.getOriginalFilename(); | ||||
| fileName = "cimg/" + fileName; | fileName = "cimg/" + fileName; | ||||
| ResultData data = awsUpload(multiReq, metadata, fileName, "cimg"); | |||||
| ResultData data = awsUpload(multiReq.getInputStream(), metadata, fileName, "cimg"); | |||||
| return data; | return data; | ||||
| } | } | ||||
| @@ -113,7 +113,7 @@ fm: | |||||
| exception: false | exception: false | ||||
| exception_emails: hupeng@iformall.com,wuguoqiang@iformall.com,gongbiao@iformall.com,luozukai@iformall.com,hanxueda@iformall.com | exception_emails: hupeng@iformall.com,wuguoqiang@iformall.com,gongbiao@iformall.com,luozukai@iformall.com,hanxueda@iformall.com | ||||
| deploy: 1 | deploy: 1 | ||||
| open: true | |||||
| open: false | |||||
| ueditor: | ueditor: | ||||
| config: config.json | config: config.json | ||||
| @@ -96,6 +96,20 @@ public class WxMerchantTradeDailyController extends BaseController { | |||||
| return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); | return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); | ||||
| wxMerchantTradeDaily.setMerchantId(merchant.getId()); | wxMerchantTradeDaily.setMerchantId(merchant.getId()); | ||||
| // 不能设置未来时间 | |||||
| if(wxMerchantTradeDaily.getReportDate() !=null){ | |||||
| try { | |||||
| SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| if(sd.parse(wxMerchantTradeDaily.getReportDate()).after(new Date())){ | |||||
| return new ResultData(ErrorCode.MERCHANT_REPORT_DATE_NOT_VALID); | |||||
| } | |||||
| }catch (Exception e){ | |||||
| e.printStackTrace(); | |||||
| logger.error("format date error",e); | |||||
| } | |||||
| } | |||||
| wxMerchantTradeDailyService.saveOrUpdate(wxMerchantTradeDaily); | wxMerchantTradeDailyService.saveOrUpdate(wxMerchantTradeDaily); | ||||
| return new ResultData(); | return new ResultData(); | ||||
| } | } | ||||
| @@ -128,7 +142,7 @@ public class WxMerchantTradeDailyController extends BaseController { | |||||
| List<WxMerchantTradeDaily> resultList = pageInfo.getList(); | List<WxMerchantTradeDaily> resultList = pageInfo.getList(); | ||||
| // 判断第1条是否是当天 | // 判断第1条是否是当天 | ||||
| if(CollectionUtils.isNotEmpty(resultList)){ | if(CollectionUtils.isNotEmpty(resultList)){ | ||||
| if(sd.format(resultList.get(0).getCreateDate()).equals(sd.format(new Date()))){ | |||||
| if(sd.format(resultList.get(0).getReportDate()).equals(sd.format(new Date()))){ | |||||
| resultList.get(0).setIsToday(1); | resultList.get(0).setIsToday(1); | ||||
| } | } | ||||
| } | } | ||||
| @@ -85,7 +85,7 @@ public enum ErrorCode{ | |||||
| MERCHANT_INFO_NOT_FOUND(2011, "商户信息没找到"), | MERCHANT_INFO_NOT_FOUND(2011, "商户信息没找到"), | ||||
| MERCHANT_INFO_NOT_EQUAL(2012, "商户信息不对应"), | MERCHANT_INFO_NOT_EQUAL(2012, "商户信息不对应"), | ||||
| MERCHANT_INFO_NOT_VALID(2013, "商户信息禁用"), | MERCHANT_INFO_NOT_VALID(2013, "商户信息禁用"), | ||||
| MERCHANT_REPORT_DATE_NOT_VALID(999, "上报日期大于当天"), | |||||
| /** | /** | ||||
| * 券 | * 券 | ||||
| @@ -14,4 +14,6 @@ public interface WxMerchantMapper extends CommonMapper<WxMerchant, Long> { | |||||
| WxMerchantVo getMerchantByCode(HashMap<String, String> params); | WxMerchantVo getMerchantByCode(HashMap<String, String> params); | ||||
| WxMerchant queryMerchantByMerchantIdOfSharingReceiver(WxMerchant wxMerchant); | WxMerchant queryMerchantByMerchantIdOfSharingReceiver(WxMerchant wxMerchant); | ||||
| List<WxMerchant> findQrcodeEmptyList(); | |||||
| } | } | ||||
| @@ -216,4 +216,9 @@ | |||||
| where m.id=#{id} | where m.id=#{id} | ||||
| </select> | </select> | ||||
| <select id="findQrcodeEmptyList" resultMap="BaseResultMap"> | |||||
| select * from wx_merchant where qr_code is null limit 1; | |||||
| </select> | |||||
| </mapper> | </mapper> | ||||
| @@ -67,7 +67,7 @@ | |||||
| </foreach> | </foreach> | ||||
| </if> | </if> | ||||
| <if test=" null != sortColumns"> order by ${sortColumns} </if> | <if test=" null != sortColumns"> order by ${sortColumns} </if> | ||||
| <if test=" null == sortColumns"> order by create_date desc </if> | |||||
| <if test=" null == sortColumns"> order by report_date desc </if> | |||||
| </sql> | </sql> | ||||
| <select id="findList" parameterType="com.iformall.domain.po.WxMerchantTradeDaily" resultMap="BaseResultMap"> | <select id="findList" parameterType="com.iformall.domain.po.WxMerchantTradeDaily" resultMap="BaseResultMap"> | ||||