Browse Source

Merge branch 'release_real_202103' of https://git.malls.iformall.com/server/formallProject into release_real_202103

release_toaliyun_real
xiaohanzi 5 years ago
parent
commit
4d2209ec9e
22 changed files with 499 additions and 195 deletions
  1. +9
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxOpinionController.java
  2. +41
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/rent/WxGooagooController.java
  3. +20
    -0
      mallinkAdmin/src/main/resources/db/migration/V202104090001__for_wx_third_party_config.sql
  4. +9
    -0
      mallinkCApi/src/main/java/com/iformall/controller/WxOpinionController.java
  5. +0
    -175
      mallinkPublicApi/src/main/java/com/iformall/utils/ImgIdeaUtil.java
  6. BIN
      mallinkPublicApi/src/main/resources/imgTemp/gertificate.jpg
  7. BIN
      mallinkPublicApi/src/main/resources/opt/HWLS.TTF
  8. +8
    -0
      mallinkService/src/main/java/com/iformall/common/ErrorCode.java
  9. +50
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxThirdPartyConfig.java
  10. +1
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java
  11. +36
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumThirdPartyConfigType.java
  12. +12
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxThirdPartyConfigMapper.java
  13. +12
    -0
      mallinkService/src/main/java/com/iformall/service/WxGooagooService.java
  14. +6
    -1
      mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java
  15. +34
    -13
      mallinkService/src/main/java/com/iformall/service/impl/WxCampaignServiceImpl.java
  16. +4
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java
  17. +96
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxGooagooServiceImpl.java
  18. +10
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxQuestionOneselfUserServiceImpl.java
  19. +78
    -0
      mallinkService/src/main/java/com/iformall/utils/gooagoo/SignUtils.java
  20. +1
    -1
      mallinkService/src/main/resources/mapper/WxOpinionMapper.xml
  21. +0
    -1
      mallinkService/src/main/resources/mapper/WxQuestionOneselfLogMapper.xml
  22. +72
    -0
      mallinkService/src/main/resources/mapper/WxThirdPartyConfigMapper.xml

+ 9
- 0
mallinkAdmin/src/main/java/com/iformall/controller/market/WxOpinionController.java View File

@@ -46,6 +46,15 @@ public class WxOpinionController extends BaseController {
return new ResultData(page); return new ResultData(page);
} }


@ApiOperation("根据id查询接口")
@GetMapping("/getById")
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
@SystemControllerLog(description = "问券调查--查询")
public ResultData getById(Long id) {
logger.debug("[" + getIpAddr() + "] WxOpinionController::getById");
return new ResultData(wxOpinionService.getById(id));
}



@ApiOperation("根据id更新接口") @ApiOperation("根据id更新接口")
@PostMapping("update") @PostMapping("update")


+ 41
- 0
mallinkAdmin/src/main/java/com/iformall/controller/rent/WxGooagooController.java View File

@@ -0,0 +1,41 @@
package com.iformall.controller.rent;

import com.iformall.annotation.SystemControllerLog;
import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController;
import com.iformall.service.WxGooagooService;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
*
*/
@RestController
@RequestMapping("gooagoo")
public class WxGooagooController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
WxGooagooService wxGooagooService;

@ApiOperation("调取接口数据")
@PostMapping("/queryData")
@SystemControllerLog(description = "数据塔台-查询客流")
public ResultData queryData(@RequestBody Map<String,Object> params) {
logger.debug("[" + getIpAddr() + "] WxGooagooController::queryData");
Object lowerMethod = params.get("lowerMethod");
if(lowerMethod == null){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"lowerMethod不能为空");
}
String requrl = lowerMethod.toString();
params.remove("lowerMethod");
return wxGooagooService.queryDataUrl(getTenantInfo(),requrl,params);
}

}

+ 20
- 0
mallinkAdmin/src/main/resources/db/migration/V202104090001__for_wx_third_party_config.sql View File

@@ -0,0 +1,20 @@
CREATE TABLE `wx_third_party_config` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '父租户ID',
`type` tinyint(6) NOT NULL COMMENT '第三方类型,',
`app_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`app_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`sign_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '加密key,',
`api_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`token` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`token_expired_time` datetime(0) DEFAULT NULL COMMENT 'token过期时间',
`user_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '登陆账号',
`password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '登陆密码',
`version` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '接口版本',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;


ALTER TABLE `mallink`.`wx_third_party_config`
ADD COLUMN `tp_id` varchar(100) AFTER `version`;

+ 9
- 0
mallinkCApi/src/main/java/com/iformall/controller/WxOpinionController.java View File

@@ -41,6 +41,7 @@ public class WxOpinionController extends BaseController {
record = new WxOpinion(); record = new WxOpinion();
} }
record.updateTenantInfo(getTenantInfo()); record.updateTenantInfo(getTenantInfo());
record.setUserId(getMemberId());
record.setSortColumns(BaseEntity.SortField.CreateDate_DESC); record.setSortColumns(BaseEntity.SortField.CreateDate_DESC);
final PageInfo<WxOpinion> page = wxOpinionService.listAsPage(record, pageNum, pageSize); final PageInfo<WxOpinion> page = wxOpinionService.listAsPage(record, pageNum, pageSize);
return new ResultData(page); return new ResultData(page);
@@ -74,4 +75,12 @@ public class WxOpinionController extends BaseController {
return new ResultData(); return new ResultData();
} }


@ApiOperation("根据id查询接口")
@GetMapping("/getById")
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
public ResultData getById(Long id) {
logger.debug("[" + getIpAddr() + "] WxOpinionController::getById");
return new ResultData(wxOpinionService.getById(id));
}

} }

+ 0
- 175
mallinkPublicApi/src/main/java/com/iformall/utils/ImgIdeaUtil.java View File

@@ -1,175 +0,0 @@
package com.iformall.utils;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.ResourceUtils;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class ImgIdeaUtil {

private static final Logger logger = LoggerFactory.getLogger(ImgIdeaUtil.class);

//模板图片
private static final String imgTempPath = "imgTemp/gertificate.jpg";
//字体路径
private static final String fontPath = "opt/HWLS.TTF";

/**
* 生成图片证书
* @return
*/
public static byte[] imgGertificate(String name, String englishName, LocalDateTime date){
if(StringUtils.isBlank(name)){
logger.error("名字为空,无法生成证书");
return null;
}
if(name.length() == 2){
name = name.replaceAll("(\\S)", "$0 ");
}
if(StringUtils.isBlank(englishName)){
englishName = getUpEname(name);
}
if(date == null){
date = LocalDateTime.now();
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dMMM yyyy", Locale.UK);
String dateFormat = date.format(formatter);

try {

InputStream backImgUrl = ClassLoader.getSystemResourceAsStream(imgTempPath);
//InputStream backImgUrl = ImgIdeaUtil.class.getClassLoader().getResourceAsStream(imgTempPath);

Font font = Font.createFont(Font.TRUETYPE_FONT, ResourceUtils.getFile("classpath:"+fontPath));
BufferedImage backImg = ImageIO.read(backImgUrl);
Graphics g = backImg.getGraphics();

//图片加中文名
Font fTxtBottomName = font.deriveFont(Font.PLAIN, 170);
//Font fTxtBottomName = new Font("华文隶书", Font.PLAIN, 170);
FontMetrics metricsName = g.getFontMetrics(fTxtBottomName);
int xName = (backImg.getWidth() - metricsName.stringWidth(name)) / 2;
Color myColorTxtBottomName = Color.BLACK; //颜色
g.setColor(myColorTxtBottomName);
g.setFont(fTxtBottomName);
g.drawString(name, xName , 1150);//g.drawString(文字, x 位置, y 位置);

//图片加英文名
Font fTxtBottomEname = font.deriveFont(Font.PLAIN, 120);
//Font fTxtBottomEname = new Font("华文隶书", Font.PLAIN, 120);
FontMetrics metricsEname = g.getFontMetrics(fTxtBottomEname);
int xEname = (backImg.getWidth() - metricsEname.stringWidth(englishName)) / 2;
Color myColorTxtBottomEname = Color.BLACK;
g.setColor(myColorTxtBottomEname);
g.setFont(fTxtBottomEname);
g.drawString(englishName, xEname, 1300);

//图片加日期
Font fTxtBottomDate = font.deriveFont(Font.PLAIN, 90);
//Font fTxtBottomDate = new Font("华文隶书", Font.PLAIN, 90);
Color myColorTxtBottomDate = Color.BLACK;
g.setColor(myColorTxtBottomDate);
g.setFont(fTxtBottomDate);
g.drawString(dateFormat, 440, 2100);

//调这个方法就是开始这个整合 (可以多张图片,多个文字整合成一张图片,只有把他们放在这方法里面就行)
g.dispose();

ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(backImg, "png", out);

return out.toByteArray();
} catch (Exception e) {
e.printStackTrace();
logger.error("生成证书异常", e.getMessage());
}
return null;
}

/**
* //姓、名的第一个字母需要为大写
* @param name
* @return
*/
public static String getUpEname(String name) {
char[] strs = name.toCharArray();
String newname = null;

if (strs.length == 2) {
newname = toUpCase(getEname("" + strs[0])) + " " + toUpCase(getEname("" + strs[1]));
} else if (strs.length == 3){
newname = toUpCase(getEname("" + strs[0])) + " "
+ toUpCase(getEname("" + strs[1] + strs[2]));
}else if (strs.length == 4){
newname = toUpCase(getEname("" + strs[0] + strs[1])) + " "
+ toUpCase(getEname("" + strs[2] + strs[3]));
} else{
newname = toUpCase(getEname(name));
}
return newname;
}


/**
* //将中文转换为英文
* @param name
* @return
*/
public static String getEname(String name){
HanyuPinyinOutputFormat pyFormat = new HanyuPinyinOutputFormat();
pyFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
pyFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
pyFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
String s = "";
try {
s = PinyinHelper.toHanyuPinyinString(name, pyFormat, "");
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace();
}
return s;
}
/**
* 首字母大写
* @param str
* @return
*/
private static String toUpCase(String str) {
StringBuffer newstr = new StringBuffer();
newstr.append((str.substring(0, 1)).toUpperCase()).append(
str.substring(1, str.length()));
return newstr.toString();
}


// public static void main(String[] args) {
// String serverUploadImgUrl = "C:/Users/xiaohu/Desktop/img"; // 图片保存路径
// try {
// byte[] bytes = imgGertificate("郑方元", null, null);
// ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
// BufferedImage bi1 =ImageIO.read(bais);
//
// ImageIO.write(bi1, "png", new File(serverUploadImgUrl+"/0.png"));
//
// } catch (Exception e) {
// e.printStackTrace();
// }
// System.out.println("结束");
// }
}

BIN
mallinkPublicApi/src/main/resources/imgTemp/gertificate.jpg View File

Before After
Width: 3301  |  Height: 2551  |  Size: 7.0 MiB

BIN
mallinkPublicApi/src/main/resources/opt/HWLS.TTF View File


+ 8
- 0
mallinkService/src/main/java/com/iformall/common/ErrorCode.java View File

@@ -597,6 +597,14 @@ public enum ErrorCode{


QUESTION_USER_NOT(61006, "答题参数错误!"), QUESTION_USER_NOT(61006, "答题参数错误!"),
QUESTION_USER_LINE(61007, "已经参与!"), QUESTION_USER_LINE(61007, "已经参与!"),
QUESTION_NOT_START(61008, "问卷未开始"),
QUESTION_END(61009, "问卷已结束"),

/**
* 数衍信息
*/
GOOAGOO_INFO_NOT_FOUND(62001,"数衍信息未找到"),
GOOAGOO_OPEN_FAIL(62002,"数衍信息请求失败"),




; ;


+ 50
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxThirdPartyConfig.java View File

@@ -0,0 +1,50 @@
package com.iformall.domain.po;

import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

@TableName(value = "wx_third_party_config")
@Data
@EqualsAndHashCode(callSuper = true)
public class WxThirdPartyConfig extends TenantEntity {

protected Long id;

@io.swagger.annotations.ApiModelProperty(value="",name="type")
private Integer type;

@io.swagger.annotations.ApiModelProperty(value="",name="appId")
private String appId;

@io.swagger.annotations.ApiModelProperty(value="",name="appKey")
private String appKey;
@io.swagger.annotations.ApiModelProperty(value="加密key",name="signKey")
private String signKey;

@io.swagger.annotations.ApiModelProperty(value="",name="apiUrl")
private String apiUrl;

@io.swagger.annotations.ApiModelProperty(value="token",name="token")
private String token;

@io.swagger.annotations.ApiModelProperty(value="",name="tokenExpiredTime")
private Date tokenExpiredTime;

@io.swagger.annotations.ApiModelProperty(value="登陆username",name="userName")
private String userName;
@io.swagger.annotations.ApiModelProperty(value="登陆password",name="password")
private String password;
@io.swagger.annotations.ApiModelProperty(value="",name="version")
private String version;

@io.swagger.annotations.ApiModelProperty(value="",name="tpId")
private String tpId;
}

+ 1
- 1
mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java View File

@@ -27,7 +27,7 @@ public enum EnumScoreType {
SIGN_IN_FTDAY(19, "连续签到14天"), SIGN_IN_FTDAY(19, "连续签到14天"),
SIGN_IN_TEDAY(20, "连续签到28天"), SIGN_IN_TEDAY(20, "连续签到28天"),


QUESTION_ADD_CREDIT(21, "游戏奖励积分"),
QUESTION_ADD_CREDIT(21, "问卷奖励积分"),


; ;




+ 36
- 0
mallinkService/src/main/java/com/iformall/enums/EnumThirdPartyConfigType.java View File

@@ -0,0 +1,36 @@
package com.iformall.enums;


/**
* @author gongbiao
*/
public enum EnumThirdPartyConfigType {

GOOAGOO(5, "数衍科技"),
;

public static EnumThirdPartyConfigType getEnum(Integer code) {
for (EnumThirdPartyConfigType value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumThirdPartyConfigType(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 12
- 0
mallinkService/src/main/java/com/iformall/mapper/WxThirdPartyConfigMapper.java View File

@@ -0,0 +1,12 @@
package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxThirdPartyConfig;

import java.util.List;

public interface WxThirdPartyConfigMapper extends CommonMapper<WxThirdPartyConfig, Long> {

List<WxThirdPartyConfig> findList(WxThirdPartyConfig config);

}

+ 12
- 0
mallinkService/src/main/java/com/iformall/service/WxGooagooService.java View File

@@ -0,0 +1,12 @@
package com.iformall.service;

import com.iformall.common.ResultData;
import com.iformall.domain.po.base.TenantEntity;

import java.util.Map;

public interface WxGooagooService {

ResultData queryDataUrl(TenantEntity tenantInfo, String url, Map<String, Object> params);

}

+ 6
- 1
mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java View File

@@ -871,7 +871,12 @@ public class DataTowerServiceImpl implements DataTowerService {
logger.info("bid:"+wiWideInfo.getWiwideId()+",newdata:"+data); logger.info("bid:"+wiWideInfo.getWiwideId()+",newdata:"+data);
if (data == null) if (data == null)
return null; return null;
token = (String) JSONObject.parseObject(data).get("data");
try{
token = (String) JSONObject.parseObject(data).get("data");
}catch (Exception e){
logger.error("getWiwideToken--"+e.getMessage());
return null;
}
updateToken(wiWideInfo, token); updateToken(wiWideInfo, token);
// } // }
logger.info("返回的token:"+token); logger.info("返回的token:"+token);


+ 34
- 13
mallinkService/src/main/java/com/iformall/service/impl/WxCampaignServiceImpl.java View File

@@ -7,16 +7,14 @@ import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker; import com.iformall.common.IdWorker;
import com.iformall.common.Result; import com.iformall.common.Result;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.WxActivity;
import com.iformall.domain.po.WxCampaign;
import com.iformall.domain.po.WxCoupon;
import com.iformall.domain.po.WxCouponChannel;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.WxCouponChannelVo; import com.iformall.domain.vo.WxCouponChannelVo;
import com.iformall.enums.*; import com.iformall.enums.*;
import com.iformall.mapper.WxActivityMapper; import com.iformall.mapper.WxActivityMapper;
import com.iformall.mapper.WxCampaignMapper; import com.iformall.mapper.WxCampaignMapper;
import com.iformall.mapper.WxCouponChannelMapper; import com.iformall.mapper.WxCouponChannelMapper;
import com.iformall.mapper.WxQuestionOneselfMapper;
import com.iformall.service.QrCodeService; import com.iformall.service.QrCodeService;
import com.iformall.service.WxCampaignService; import com.iformall.service.WxCampaignService;
import com.iformall.service.WxCouponService; import com.iformall.service.WxCouponService;
@@ -58,6 +56,9 @@ public class WxCampaignServiceImpl implements WxCampaignService {
@Autowired @Autowired
WxActivityMapper wxActivityMapper; WxActivityMapper wxActivityMapper;


@Autowired
WxQuestionOneselfMapper wxQuestionOneselfMapper;

@Override @Override
public PageInfo<WxCampaign> listAsPage(WxCampaign record, Integer pageIndex, Integer pageSize) { public PageInfo<WxCampaign> listAsPage(WxCampaign record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCampaignMapper.findList(record)); return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCampaignMapper.findList(record));
@@ -111,8 +112,7 @@ public class WxCampaignServiceImpl implements WxCampaignService {
if (wxCampaign.getProduceType() == null) { if (wxCampaign.getProduceType() == null) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "produceType不能为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "produceType不能为空");
} }
if (wxCampaign.getProduceType().equals(EnumCampaignProductType.ACTIVITY_JOIN.getCode())
&& wxCampaign.getProduceId() == null) {
if (wxCampaign.getProduceId() == null) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "produceId不能为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "produceId不能为空");
} }
if (StringUtils.isBlank(wxCampaign.getPagePath())) { if (StringUtils.isBlank(wxCampaign.getPagePath())) {
@@ -151,8 +151,7 @@ public class WxCampaignServiceImpl implements WxCampaignService {
if (wxCampaign.getProduceType() == null) { if (wxCampaign.getProduceType() == null) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "produceType不能为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "produceType不能为空");
} }
if (wxCampaign.getProduceType().equals(EnumCampaignProductType.ACTIVITY_JOIN.getCode())
&& wxCampaign.getProduceId() == null) {
if (wxCampaign.getProduceId() == null) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "produceId不能为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "produceId不能为空");
} }
if (StringUtils.isBlank(wxCampaign.getPagePath())) { if (StringUtils.isBlank(wxCampaign.getPagePath())) {
@@ -180,17 +179,39 @@ public class WxCampaignServiceImpl implements WxCampaignService {
wxCampaignMapper.updateById(wxCampaign); wxCampaignMapper.updateById(wxCampaign);
if (wxCampaign.getType().equals(EnumCampaignType.PAGEPATH.getCode())) { if (wxCampaign.getType().equals(EnumCampaignType.PAGEPATH.getCode())) {
WxCampaign campaign = wxCampaignMapper.selectById(wxCampaign.getId()); WxCampaign campaign = wxCampaignMapper.selectById(wxCampaign.getId());
WxActivity wxActivity = new WxActivity();
wxActivity.setId(campaign.getProduceId());
wxActivity.setStatus(wxCampaign.getStatus());
wxActivity.setUpdateTime(new Date());
wxActivityMapper.updateById(wxActivity);
this.updateOtherStatus(campaign.getProduceId(),campaign.getStatus(),campaign.getProduceType());
} }
//type 为固定格式才会有券的信息 才会有投放的问题 //type 为固定格式才会有券的信息 才会有投放的问题
couponInject(wxCampaign); couponInject(wxCampaign);
return new ResultData(Result.SUCCESS, "操作成功"); return new ResultData(Result.SUCCESS, "操作成功");
} }


private void updateOtherStatus(Long produceId, Integer status,Integer produceType) {
if(produceType.equals(EnumCampaignProductType.ACTIVITY_JOIN.getCode())){
WxActivity wxActivity = new WxActivity();
wxActivity.setId(produceId);
if (status.equals(EnumCampaignStatus.STATUS_THROW_IN.getCode())){
wxActivity.setStatus(EnumActivityStatus.INJECT_CAMPAIGN.getCode());
}
if(status.equals(EnumCampaignStatus.STATUS_TAKE_OFFF.getCode())){
wxActivity.setStatus(EnumActivityStatus.INJECT_ONLINE.getCode());
}
wxActivity.setUpdateTime(new Date());
wxActivityMapper.updateById(wxActivity);
}else if(produceType.equals(EnumCampaignProductType.QUESTION_ONESEL.getCode())){
WxQuestionOneself wxQuestionOneself = new WxQuestionOneself();
wxQuestionOneself.setId(produceId);
if (status.equals(EnumCampaignStatus.STATUS_THROW_IN.getCode())){
wxQuestionOneself.setStatus(EnumActivityStatus.INJECT_CAMPAIGN.getCode());
}
if(status.equals(EnumCampaignStatus.STATUS_TAKE_OFFF.getCode())){
wxQuestionOneself.setStatus(EnumActivityStatus.INJECT_ONLINE.getCode());
}
wxQuestionOneself.setUpdateDate(new Date());
wxQuestionOneselfMapper.updateById(wxQuestionOneself);
}
}

public void couponInject(WxCampaign wxCampaign) { public void couponInject(WxCampaign wxCampaign) {
wxCampaign = wxCampaignMapper.selectById(wxCampaign.getId()); wxCampaign = wxCampaignMapper.selectById(wxCampaign.getId());
if (wxCampaign.getType().equals(EnumCampaignType.STABLE.getCode())) { if (wxCampaign.getType().equals(EnumCampaignType.STABLE.getCode())) {


+ 4
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java View File

@@ -444,6 +444,10 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
return signinMonthCredit(record,EnumScoreType.SIGN_IN_TEDAY); return signinMonthCredit(record,EnumScoreType.SIGN_IN_TEDAY);
} }


if (record.getCreditType() == EnumScoreType.QUESTION_ADD_CREDIT.getCode()) {
return record.getCreditNum();
}

return 0; return 0;
} }




+ 96
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxGooagooServiceImpl.java View File

@@ -0,0 +1,96 @@
package com.iformall.service.impl;

import com.alibaba.druid.support.json.JSONUtils;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.iformall.common.ErrorCode;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.domain.po.WxThirdPartyConfig;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumThirdPartyConfigType;
import com.iformall.mapper.WxThirdPartyConfigMapper;
import com.iformall.service.*;
import com.iformall.utils.DateUtils;
import com.iformall.utils.HttpUtil;
import com.iformall.utils.gooagoo.SignUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;


/**
*/
@Service
public class WxGooagooServiceImpl implements WxGooagooService {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

private final String method = "gogo.open.auto.routing";
private final String v = "1.0";

@Autowired
WxThirdPartyConfigMapper wxThirdPartyConfigMapper;

/**
* @param tenantEntity
* @param url
* @param params
* @return
*/
@Override
public ResultData queryDataUrl(TenantEntity tenantEntity, String url, Map<String, Object> params) {
WxThirdPartyConfig configQ = new WxThirdPartyConfig();
configQ.updateTenantInfo(tenantEntity);
configQ.setType(EnumThirdPartyConfigType.GOOAGOO.getCode());
configQ.setVersion(v);
WxThirdPartyConfig config = wxThirdPartyConfigMapper.selectOne(new QueryWrapper<>(configQ));
if(config == null){
return new ResultData(ErrorCode.GOOAGOO_INFO_NOT_FOUND);
}
Map<String,String> paramMap = this.getParamMap(config);
paramMap.put("lowerMethod",url);
List<String> sl = new ArrayList<>();
sl.add(config.getTpId());
params.put("shopIds", sl);
paramMap.put("data", JSONUtils.toJSONString(params));

String sign= SignUtils.sign(config.getSignKey(),paramMap);

paramMap.put("sign",sign);

String res = HttpUtil.doPost(config.getApiUrl(), paramMap);

JSONObject result = JSONObject.parseObject(res);
logger.info("GOOAGOO_RESULT{}"+result.toJSONString());
if (result == null)
return new ResultData(ErrorCode.GOOAGOO_INFO_NOT_FOUND);
if ("OPEN_SUCCESS".equals(result.getString("rescode"))){
return new ResultData(Result.SUCCESS,result.getString("resmsg"),
result.get("data"));
// result.getJSONArray("data"));
} else{
return new ResultData(ErrorCode.GOOAGOO_OPEN_FAIL,result.getString("resmsg"));
}
}

private Map<String,String> getParamMap(WxThirdPartyConfig config){

Map<String,String> map = new HashMap<>();
map.put("appId",config.getAppId());
map.put("appKey",config.getAppKey());
map.put("method",method);
map.put("timestamp", DateUtils.getSystemTime("yyyyMMDDHHmmss"));
map.put("messageFormat","json");
map.put("v",v);
map.put("signMethod","MD5");

return map;
}



}

+ 10
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxQuestionOneselfUserServiceImpl.java View File

@@ -144,7 +144,13 @@ public class WxQuestionOneselfUserServiceImpl implements WxQuestionOneselfUserSe
wxQuestionOneselfMapper.updateCountUser(record.getQuestionId()); wxQuestionOneselfMapper.updateCountUser(record.getQuestionId());


WxQuestionOneself wxQuestionOneself = wxQuestionOneselfMapper.selectById(record.getQuestionId()); WxQuestionOneself wxQuestionOneself = wxQuestionOneselfMapper.selectById(record.getQuestionId());
if(wxQuestionOneself.getRewardCredit() != null && wxQuestionOneself.getRewardCredit() >= 0){
if(now.before(wxQuestionOneself.getStartDate())){
throw new MallinkException(ErrorCode.QUESTION_NOT_START);
}
if(now.after(wxQuestionOneself.getEndDate())){
throw new MallinkException(ErrorCode.QUESTION_END);
}
if(wxQuestionOneself.getRewardCredit() != null && wxQuestionOneself.getRewardCredit() > 0){
WxCreditHistory wxCreditHistory = new WxCreditHistory(); WxCreditHistory wxCreditHistory = new WxCreditHistory();
wxCreditHistory.setTenantId(record.getFinalTenantId()); wxCreditHistory.setTenantId(record.getFinalTenantId());
wxCreditHistory.setCUserId(record.getUserId()); wxCreditHistory.setCUserId(record.getUserId());
@@ -179,7 +185,7 @@ public class WxQuestionOneselfUserServiceImpl implements WxQuestionOneselfUserSe


WxQuestionOneselfTopic topicQ = new WxQuestionOneselfTopic(); WxQuestionOneselfTopic topicQ = new WxQuestionOneselfTopic();
topicQ.updateTenantInfo(record); topicQ.updateTenantInfo(record);
topicQ.setQuestionId(record.getId());
topicQ.setQuestionId(record.getQuestionId());
List<WxQuestionOneselfTopic> topicList = wxQuestionOneselfTopicMapper.findList(topicQ); List<WxQuestionOneselfTopic> topicList = wxQuestionOneselfTopicMapper.findList(topicQ);


if(topicList != null && topicList.size() > 0){ if(topicList != null && topicList.size() > 0){
@@ -205,9 +211,10 @@ public class WxQuestionOneselfUserServiceImpl implements WxQuestionOneselfUserSe
map.put(log.getTopicId().toString(),log.getAnswerStr()); map.put(log.getTopicId().toString(),log.getAnswerStr());
} }
} }
dataList.add(map);
} }
} }
excelService.exportExcel(headList,dataList, null, "ceshi", "ceshi.xlsx", true,response );
excelService.exportExcel(headList,dataList, null, "问卷", "问卷结果.xlsx", true,response );
} }


@Override @Override


+ 78
- 0
mallinkService/src/main/java/com/iformall/utils/gooagoo/SignUtils.java View File

@@ -0,0 +1,78 @@
package com.iformall.utils.gooagoo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.security.MessageDigest;
import java.util.Arrays;
import java.util.Map;

public class SignUtils {

private final static Logger logger = LoggerFactory.getLogger(SignUtils.class);

public SignUtils() {
}

public static String sign(String appSecret, Map<String, String> form) {
return getSign(appSecret, form, (String)form.get("signMethod"));
}

public static String getSign(String appSecret, Map<String, String> params, String signMethod) {
String[] keys = (String[])params.keySet().toArray(new String[0]);
Arrays.sort(keys);
StringBuilder signStr = new StringBuilder();
String[] var5 = keys;
int var6 = keys.length;

for(int var7 = 0; var7 < var6; ++var7) {
String key = var5[var7];
String value = (String)params.get(key);
if (value != null && !"".equals(value)) {
signStr.append(key).append("=").append(value).append("&");
}
}

signStr.append("key=").append(appSecret);
logger.info("服务端的签名之前的字符串:" + signStr.toString());
if ("MD5".equals(signMethod)) {
return getMD5(signStr.toString());
} else {
return getSHA(signStr.toString());
}
}

public static String getSHA(String str) {
return encrypt(str, "SHA");
}

public static String getMD5(String str) {
return encrypt(str, "MD5");
}

private static String encrypt(String str, String algorithm) {
try {
MessageDigest md = MessageDigest.getInstance(algorithm);
md.update(str.getBytes("UTF-8"));
byte[] digest = md.digest();
StringBuffer hexstr = new StringBuffer();
String shaHex = "";

for(int i = 0; i < digest.length; ++i) {
shaHex = Integer.toHexString(digest[i] & 255);
if (shaHex.length() < 2) {
hexstr.append(0);
}

hexstr.append(shaHex);
}

return hexstr.toString().toUpperCase();
} catch (Exception var7) {
var7.printStackTrace();
// throw new Exception(var7);
}
return null;
}

}

+ 1
- 1
mallinkService/src/main/resources/mapper/WxOpinionMapper.xml View File

@@ -7,7 +7,7 @@
<result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId" /> <result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId" />
<result column="user_id" jdbcType="BIGINT" property="userId"/> <result column="user_id" jdbcType="BIGINT" property="userId"/>
<result column="liaison_man" jdbcType="VARCHAR" property="liaisonMan"/> <result column="liaison_man" jdbcType="VARCHAR" property="liaisonMan"/>
<result column="liaison_sex" jdbcType="TINYINT" property="liaisonrSex"/>
<result column="liaison_sex" jdbcType="TINYINT" property="liaisonSex"/>
<result column="liaison_phone" jdbcType="VARCHAR" property="liaisonPhone"/> <result column="liaison_phone" jdbcType="VARCHAR" property="liaisonPhone"/>
<result column="liaison_email" jdbcType="VARCHAR" property="liaisonEmail"/> <result column="liaison_email" jdbcType="VARCHAR" property="liaisonEmail"/>
<result column="title" jdbcType="VARCHAR" property="title"/> <result column="title" jdbcType="VARCHAR" property="title"/>


+ 0
- 1
mallinkService/src/main/resources/mapper/WxQuestionOneselfLogMapper.xml View File

@@ -55,7 +55,6 @@
</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 </if>
</sql> </sql>


<select id="findList" parameterType="com.iformall.domain.po.WxQuestionOneselfLog" resultMap="BaseResultMap"> <select id="findList" parameterType="com.iformall.domain.po.WxQuestionOneselfLog" resultMap="BaseResultMap">


+ 72
- 0
mallinkService/src/main/resources/mapper/WxThirdPartyConfigMapper.xml View File

@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.iformall.mapper.WxThirdPartyConfigMapper">
<resultMap id="BaseResultMap" type="com.iformall.domain.po.WxThirdPartyConfig">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/>
<result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId" />
<result column="type" jdbcType="INTEGER" property="type"/>
<result column="app_id" jdbcType="VARCHAR" property="appId"/>
<result column="app_key" jdbcType="VARCHAR" property="appKey"/>
<result column="sign_key" jdbcType="VARCHAR" property="signKey"/>
<result column="api_url" jdbcType="VARCHAR" property="apiUrl"/>
<result column="token" jdbcType="VARCHAR" property="token"/>
<result column="token_expired_time" jdbcType="TIMESTAMP" property="tokenExpiredTime"/>
<result column="user_name" jdbcType="VARCHAR" property="userName"/>
<result column="password" jdbcType="VARCHAR" property="password"/>
<result column="version" jdbcType="VARCHAR" property="version"/>
<result column="tp_id" jdbcType="VARCHAR" property="tpId"/>
</resultMap>

<sql id="allColumns">
`id`,`tenant_id`,`parent_tenant_id`,`type`,`app_id`,`app_key`,`sign_key`,`api_url`, `token`,`token_expired_time`,`user_name`,`password`,`version`,`tp_id`
</sql>

<sql id="dynamicWhereConditions">
where 1 = 1

<if test=" null != id ">
and `id` = #{id}
</if>

<if test=" null != tenantId and '' != tenantId">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != parentTenantId and '' != parentTenantId">
and `parent_tenant_id` = #{parentTenantId}
</if>

<if test=" null != type ">
and `type` = #{type}
</if>
<if test=" null != version and '' != version">
and `version` = #{version}
</if>
<if test=" null != ids ">
and id in
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
#{idItem}
</foreach>
</if>
<if test=" null != sortColumns">order by ${sortColumns}</if>
</sql>

<select id="findList" parameterType="com.iformall.domain.po.WxThirdPartyConfig" resultMap="BaseResultMap">
select
<include refid="allColumns"/>
from wx_third_party_config
<include refid="dynamicWhereConditions"/>
</select>

<update id="updateToken" parameterType="com.iformall.domain.po.WxThirdPartyConfig">
update wx_third_party_config set token=#{token},token_expired_time=#{tokenExpiredTime} where id=#{id}
</update>
<update id="updateSercret" parameterType="com.iformall.domain.po.WxThirdPartyConfig">
update wx_third_party_config set app_id=#{appId},app_key=#{appKey} where id=#{id}
</update>


</mapper>

Loading…
Cancel
Save