| @@ -2,13 +2,17 @@ package com.iformall.controller.app; | |||
| import cn.binarywang.wx.miniapp.api.WxMaService; | |||
| import cn.binarywang.wx.miniapp.bean.WxMaCodeLineColor; | |||
| import com.amazonaws.services.s3.model.ObjectMetadata; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.controller.base.BaseController; | |||
| import com.iformall.controller.sys.UploadController; | |||
| import com.iformall.domain.po.WxAppinfo; | |||
| import com.iformall.domain.po.WxMerchant; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.mapper.WxMerchantMapper; | |||
| import com.iformall.service.WxAppinfoService; | |||
| import com.iformall.service.wechat.FmOpenService; | |||
| import com.iformall.utils.Constant; | |||
| @@ -23,14 +27,15 @@ import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| 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.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.UUID; | |||
| @RestController | |||
| @RequestMapping("wxAppinfo") | |||
| @@ -46,6 +51,31 @@ public class WxAppinfoController extends BaseController { | |||
| @Autowired | |||
| 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\"}") | |||
| @PostMapping("/downQrCode") | |||
| 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, | |||
| getTenantId(), type, pageUrl, sceneParam, | |||
| withText, text1, text2, | |||
| name); | |||
| name,false); | |||
| } catch (Exception e) { | |||
| logger.error(e.getMessage()); | |||
| 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, | |||
| int withText, String text1, String text2, | |||
| String name) { | |||
| String name,boolean upload) { | |||
| // type 0 有限二维码, 1 无限制二维码 | |||
| // withText 0 不带字 1. 带下面的字,2 带下面的两行字 | |||
| WxAppinfo appinfo = wxAppinfoService.getCAppInfo(tenantId); | |||
| @@ -160,12 +190,33 @@ public class WxAppinfoController extends BaseController { | |||
| } | |||
| 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); | |||
| org.apache.commons.io.FileUtils.forceDelete(dest); | |||
| } catch (Exception e) { | |||
| logger.error(e.getMessage()); | |||
| } | |||
| return new ResultData(); | |||
| } | |||
| private void downFile(String filePath, String filename, HttpServletResponse response, HttpServletRequest req) throws IOException { | |||
| @@ -39,6 +39,13 @@ public class WxMerchantTradeDailyController extends BaseController { | |||
| @Autowired | |||
| private WxMerchantService wxMerchantService; | |||
| @ApiOperation("获得指定日期的解单,默认不传reportDate为当天") | |||
| @GetMapping("/getVolume") | |||
| public ResultData getVolume(WxMerchantTradeDaily wxMerchantTradeDaily) { | |||
| wxMerchantTradeDaily.setTenantId(getTenantId()); | |||
| return wxMerchantTradeDailyService.getVolume(wxMerchantTradeDaily,getUser().getId()); | |||
| } | |||
| @ApiOperation("获得昨日解单列表") | |||
| @GetMapping("/listYesterday") | |||
| @@ -11,6 +11,7 @@ import com.iformall.domain.vo.MallUserInfoVo; | |||
| import com.iformall.enums.*; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.annotation.SystemControllerLog; | |||
| import com.iformall.mapper.WxMerchantMapper; | |||
| import com.iformall.service.*; | |||
| import com.iformall.shiro.UserSession; | |||
| import com.iformall.shiro.UseriFormallToken; | |||
| @@ -28,6 +28,7 @@ import org.springframework.web.multipart.MultipartFile; | |||
| import java.io.BufferedInputStream; | |||
| import java.io.FileOutputStream; | |||
| import java.io.IOException; | |||
| import java.io.InputStream; | |||
| import java.net.URL; | |||
| import java.util.*; | |||
| @@ -46,7 +47,7 @@ public class UploadController extends BaseController { | |||
| 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(); | |||
| try { | |||
| if(s3 == null) { | |||
| @@ -67,7 +68,7 @@ public class UploadController extends BaseController { | |||
| } | |||
| s3.putObject( | |||
| new PutObjectRequest(awsProperty.getBucketName(), fileName, multiReq.getInputStream(), metadata) | |||
| new PutObjectRequest(awsProperty.getBucketName(), fileName, inputStream, metadata) | |||
| .withCannedAcl(CannedAccessControlList.PublicRead)); | |||
| URL url = s3.getUrl(awsProperty.getBucketName(), fileName); | |||
| logger.info(url.toString()); | |||
| @@ -102,7 +103,7 @@ public class UploadController extends BaseController { | |||
| logger.warn("Error Message: " + ace.getMessage()); | |||
| data.code = ResultData.ERROR; | |||
| data.message = "上传失败"; | |||
| } catch (IOException ioe) { | |||
| } catch (Exception ioe) { | |||
| data.code = ResultData.ERROR; | |||
| logger.warn("Caught an IOException: " + ioe.getMessage()); | |||
| data.code = ResultData.ERROR; | |||
| @@ -120,7 +121,7 @@ public class UploadController extends BaseController { | |||
| */ | |||
| @PostMapping(value = "/awsFileUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") | |||
| @ApiOperation("上传文件") | |||
| public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) { | |||
| public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) throws Exception{ | |||
| logger.info("[" + getIpAddr() + "] UploadController::awsfileUpload"); | |||
| ObjectMetadata metadata = new ObjectMetadata(); | |||
| @@ -138,7 +139,8 @@ public class UploadController extends BaseController { | |||
| fileName = getTenantId() + "/" + fileName; | |||
| } | |||
| ResultData data = awsUpload(multiReq, metadata, fileName, getTenantId()); | |||
| System.out.println(fileName); | |||
| ResultData data = awsUpload(multiReq.getInputStream(), metadata, fileName, getTenantId()); | |||
| return data; | |||
| } | |||
| @@ -151,7 +153,7 @@ public class UploadController extends BaseController { | |||
| */ | |||
| @PostMapping(value = "/awsFilesUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") | |||
| @ApiOperation("多文件上传") | |||
| public ResultData awsFilesUpload(@RequestParam("files") MultipartFile[] files) { | |||
| public ResultData awsFilesUpload(@RequestParam("files") MultipartFile[] files) throws Exception{ | |||
| logger.info("[" + getIpAddr() + "] UploadController::awsFilesUpload"); | |||
| if(files.length > 0){ | |||
| @@ -177,7 +179,7 @@ public class UploadController extends BaseController { | |||
| fileName = getTenantId() + "/" + fileName; | |||
| } | |||
| ResultData data1 = awsUpload(multipartFile, metadata, fileName, getTenantId()); | |||
| ResultData data1 = awsUpload(multipartFile.getInputStream(), metadata, fileName, getTenantId()); | |||
| if(data1.code == ResultData.SUCCESS) { | |||
| Map _data = (Map)data1.data; | |||
| 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") | |||
| @ApiOperation("C端上传图片文件") | |||
| public ResultData cimgUpload(@RequestParam("file") MultipartFile multiReq) { | |||
| public ResultData cimgUpload(@RequestParam("file") MultipartFile multiReq) throws Exception{ | |||
| logger.info("[" + getIpAddr() + "] UploadController::cimgUpload"); | |||
| ObjectMetadata metadata = new ObjectMetadata(); | |||
| @@ -215,7 +217,7 @@ public class UploadController extends BaseController { | |||
| String fileName = multiReq.getOriginalFilename(); | |||
| fileName = "cimg/" + fileName; | |||
| ResultData data = awsUpload(multiReq, metadata, fileName, "cimg"); | |||
| ResultData data = awsUpload(multiReq.getInputStream(), metadata, fileName, "cimg"); | |||
| return data; | |||
| } | |||
| @@ -113,7 +113,7 @@ fm: | |||
| exception: false | |||
| exception_emails: hupeng@iformall.com,wuguoqiang@iformall.com,gongbiao@iformall.com,luozukai@iformall.com,hanxueda@iformall.com | |||
| deploy: 1 | |||
| open: true | |||
| open: false | |||
| ueditor: | |||
| config: config.json | |||
| @@ -96,6 +96,20 @@ public class WxMerchantTradeDailyController extends BaseController { | |||
| return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); | |||
| 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); | |||
| return new ResultData(); | |||
| } | |||
| @@ -128,7 +142,7 @@ public class WxMerchantTradeDailyController extends BaseController { | |||
| List<WxMerchantTradeDaily> resultList = pageInfo.getList(); | |||
| // 判断第1条是否是当天 | |||
| 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); | |||
| } | |||
| } | |||
| @@ -85,7 +85,7 @@ public enum ErrorCode{ | |||
| MERCHANT_INFO_NOT_FOUND(2011, "商户信息没找到"), | |||
| MERCHANT_INFO_NOT_EQUAL(2012, "商户信息不对应"), | |||
| 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); | |||
| WxMerchant queryMerchantByMerchantIdOfSharingReceiver(WxMerchant wxMerchant); | |||
| List<WxMerchant> findQrcodeEmptyList(); | |||
| } | |||
| @@ -216,4 +216,9 @@ | |||
| where m.id=#{id} | |||
| </select> | |||
| <select id="findQrcodeEmptyList" resultMap="BaseResultMap"> | |||
| select * from wx_merchant where qr_code is null limit 1; | |||
| </select> | |||
| </mapper> | |||
| @@ -67,7 +67,7 @@ | |||
| </foreach> | |||
| </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> | |||
| <select id="findList" parameterType="com.iformall.domain.po.WxMerchantTradeDaily" resultMap="BaseResultMap"> | |||