420 lines
15 KiB
420 lines
15 KiB
package com.cweb.controller;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.cweb.config.SysConst;
|
|
import com.hai.common.exception.ErrorCode;
|
|
import com.hai.common.exception.ErrorHelp;
|
|
import com.hai.common.exception.SysCode;
|
|
import com.hai.common.utils.HttpsUtils;
|
|
import com.hai.common.utils.ResponseMsgUtil;
|
|
import com.hai.common.utils.WxUtils;
|
|
import com.hai.entity.*;
|
|
import com.hai.model.ResponseData;
|
|
import com.hai.service.*;
|
|
import io.swagger.annotations.Api;
|
|
import io.swagger.annotations.ApiOperation;
|
|
import me.chanjar.weixin.common.util.crypto.SHA1;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.math.BigDecimal;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
|
|
@RestController
|
|
@RequestMapping(value="/common")
|
|
@Api(value="共用接口")
|
|
public class CommonController {
|
|
|
|
Logger log = LoggerFactory.getLogger(CommonController.class);
|
|
|
|
@Resource
|
|
private CommonService commonService;
|
|
|
|
@Resource
|
|
private SecConfigService secConfigService;
|
|
|
|
@Resource
|
|
private BsCompanyService bsCompanyService;
|
|
|
|
@Resource
|
|
private HighOrderService highOrderService;
|
|
|
|
@Resource
|
|
private BsIntegralRebateService bsIntegralRebateService;
|
|
|
|
@RequestMapping(value="/getDredgeProvince",method= RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "查询已开通的省份")
|
|
public ResponseData getDredgeProvince(){
|
|
try {
|
|
List<BsCompany> list = bsCompanyService.getCompany(new HashMap<>());
|
|
List<Map<String,Object>> mapList = new ArrayList<>();
|
|
Map<String,Object> map;
|
|
if (list.size() > 0) {
|
|
for (BsCompany company : list) {
|
|
map = new HashMap<>();
|
|
if (StringUtils.isNotBlank(company.getRegionId())) {
|
|
map.put("companyId", company.getId());
|
|
map.put("regionId", company.getRegionId());
|
|
SecRegion secRegion = commonService.getRegionsById(Long.parseLong(company.getRegionId()));
|
|
if (secRegion != null) {
|
|
map.put("regionName", secRegion.getRegionName());
|
|
}
|
|
mapList.add(map);
|
|
}
|
|
}
|
|
}
|
|
return ResponseMsgUtil.success(mapList);
|
|
} catch (Exception e) {
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value="/getRegionsByParentId",method= RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "分级查询区域信息")
|
|
public ResponseData getRegionsByParentId(@RequestParam(name = "regionId", required = false) Long regionId){
|
|
try {
|
|
if (regionId == null){
|
|
return ResponseMsgUtil.success(commonService.getCities());
|
|
}
|
|
return ResponseMsgUtil.success(commonService.getRegionsByParentId(regionId));
|
|
} catch (Exception e) {
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value="/getParentInfosByRegionId",method= RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "查询父级区域信息")
|
|
public ResponseData getParentInfosByRegionId(@RequestParam(name = "regionId", required = true) Long regionId) {
|
|
try {
|
|
return ResponseMsgUtil.success(commonService.getParentInfoByRegionId(regionId));
|
|
} catch (Exception e) {
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value="/getRegionsById",method= RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "查询区域详细信息")
|
|
public ResponseData getRegionsById(@RequestParam(name = "regionId", required = true) Long regionId){
|
|
try {
|
|
return ResponseMsgUtil.success(commonService.getRegionsById(regionId));
|
|
} catch (Exception e) {
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
|
|
@RequestMapping(value="/getDictionaries",method= RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "查询数据字典")
|
|
public ResponseData getDictionaries(){
|
|
try {
|
|
return ResponseMsgUtil.success(commonService.getDictionaries());
|
|
} catch (Exception e) {
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@RequestMapping(value="/getDictionaryByCodeType",method = RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "根据 码值类型 查询数据字典")
|
|
public ResponseData getDictionaryByCodeType(@RequestParam(name = "codeType", required = true) String codeType) {
|
|
try {
|
|
|
|
return ResponseMsgUtil.success(commonService.getDictionarys(codeType));
|
|
|
|
} catch (Exception e) {
|
|
log.error("CommonController --> getDictionaryByCodeType() error!", e);
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value="/mappingSysNameOl",method = RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "根据 码值类型 查询数据字典")
|
|
public ResponseData mappingSysNameOl(@RequestParam(name = "codeType", required = true) String codeType) {
|
|
try {
|
|
|
|
return ResponseMsgUtil.success(commonService.mappingSysNameOl(codeType));
|
|
|
|
} catch (Exception e) {
|
|
log.error("CommonController --> getDictionaryByCodeType() error!", e);
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value="/getDictionaryByCodeTypeOl",method = RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "根据 码值类型 查询数据字典")
|
|
public ResponseData getDictionaryByCodeTypeOl(@RequestParam(name = "codeType", required = true) String codeType) {
|
|
try {
|
|
|
|
return ResponseMsgUtil.success(secConfigService.findByCodeType(codeType));
|
|
|
|
} catch (Exception e) {
|
|
log.error("CommonController --> getDictionaryByCodeType() error!", e);
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value="/updateDictionary",method = RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "根据 码值类型 查询数据字典")
|
|
public ResponseData updateDictionary(
|
|
@RequestParam(name = "codeType", required = true) String codeType,
|
|
@RequestParam(name = "codeValue", required = true) String codeValue
|
|
) {
|
|
try {
|
|
|
|
SecConfig secConfig = secConfigService.findByCodeType(codeType);
|
|
secConfig.setCodeValue(codeValue);
|
|
secConfigService.updateSecConfig(secConfig);
|
|
|
|
return ResponseMsgUtil.success("修改成功");
|
|
} catch (Exception e) {
|
|
log.error("CommonController --> getDictionaryByCodeType() error!", e);
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value="/getDictionaryByCodeTypeAndExt",method = RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "根据 码值类型 查询数据字典")
|
|
public ResponseData getDictionaryByCodeTypeAndExt(@RequestParam(name = "codeType", required = true) String codeType, String ext1) {
|
|
try {
|
|
|
|
return ResponseMsgUtil.success(commonService.getDictionarysAndExt(codeType,ext1));
|
|
|
|
} catch (Exception e) {
|
|
log.error("CommonController --> getDictionaryByCodeType() error!", e);
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value="/getIdAndNameByCodeType",method = RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "根据 码值类型 查询数据字典的id和name")
|
|
public ResponseData getIdAndNameByCodeType(@RequestParam(name = "codeType", required = true) String codeType) {
|
|
try {
|
|
|
|
return ResponseMsgUtil.success(commonService.getIdAndName(codeType));
|
|
|
|
} catch (Exception e) {
|
|
log.error("CommonController --> getIdAndNameByCodeType() error!", e);
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value="/getDictionaryByCodeTypeAndValue",method = RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "根据码值类型及value查询数据字典")
|
|
public ResponseData getDictionaryByCodeType(@RequestParam(name = "codeType", required = true) String codeType,
|
|
@RequestParam(name = "codeValue", required = true) String codeValue) {
|
|
try {
|
|
|
|
return ResponseMsgUtil.success(commonService.mappingSysCode(codeType,codeValue));
|
|
|
|
} catch (Exception e) {
|
|
log.error("CommonController --> getDictionaryByCodeTypeAndValue() error!", e);
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value="/findSecConfigByType",method = RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "根据码值类型查询数据")
|
|
public ResponseData findSecConfigByType(@RequestParam(name = "codeType", required = true) String codeType) {
|
|
try {
|
|
|
|
return ResponseMsgUtil.success(commonService.findSecConfigByType(codeType));
|
|
|
|
} catch (Exception e) {
|
|
log.error("CommonController --> getDictionaryByCodeTypeAndValue() error!", e);
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value = "/ getScanCodePageHtmlSign", method = RequestMethod.POST)
|
|
@ResponseBody
|
|
@ApiOperation(value = "获取扫码页面签名")
|
|
public ResponseData getScanCodePageHtmlSign(@RequestBody JSONObject body) {
|
|
try {
|
|
if (body == null || StringUtils.isBlank(body.getString("url"))) {
|
|
log.error("getH5UserInfo error!", "参数校验失败" );
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
|
|
}
|
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
params.put("appid", SysConst.getSysConfig().getWxH5AppId());
|
|
params.put("secret", SysConst.getSysConfig().getWxH5AppSecret());
|
|
params.put("grant_type", "client_credential");
|
|
|
|
JSONObject accessTokenObject = HttpsUtils.doGet("https://api.weixin.qq.com/cgi-bin/token", params);
|
|
if (accessTokenObject == null) {
|
|
log.error("getH5UserInfo error!", "获取微信access_token失败" );
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "获取微信access_token失败");
|
|
}
|
|
|
|
params.clear();
|
|
params.put("access_token", accessTokenObject.getString("access_token"));
|
|
params.put("type", "jsapi");
|
|
JSONObject jsapiTicketObject = HttpsUtils.doGet("https://api.weixin.qq.com/cgi-bin/ticket/getticket", params);
|
|
if (jsapiTicketObject == null) {
|
|
log.error("getH5UserInfo error!", "获取微信jsapi_ticket失败" );
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "获取微信jsapi_ticket失败");
|
|
}
|
|
|
|
params = new HashMap<>();
|
|
params.put("noncestr", WxUtils.makeNonStr());
|
|
params.put("jsapi_ticket", jsapiTicketObject.getString("ticket"));
|
|
params.put("timestamp", System.currentTimeMillis() / 1000);
|
|
params.put("url", body.getString("url"));
|
|
|
|
String signatureStr = WxUtils.generateSignature(params);
|
|
System.out.println(signatureStr);
|
|
params.put("signature", SHA1.gen(signatureStr));
|
|
return ResponseMsgUtil.success(params);
|
|
|
|
} catch (Exception e) {
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value = "/findByLatAndLng", method = RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "获取定位信息")
|
|
public ResponseData findByLatAndLng(
|
|
@RequestParam(name = "lng", required = true) String lng,
|
|
@RequestParam(name = "lat", required = true) String lat
|
|
) {
|
|
try {
|
|
|
|
|
|
JSONObject jsonObjectR = commonService.findByLatAndLng(lng , lat);
|
|
|
|
if (!jsonObjectR.getString("status").equals("0")) {
|
|
log.error("findByLatAndLng error!", "定位错误,请重新定位" );
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "定位错误,请重新定位");
|
|
}
|
|
|
|
JSONObject object = commonService.findByLatAndLng(lng , lat).getJSONObject("result").getJSONObject("addressComponent");
|
|
|
|
|
|
ApiCity apiCity = commonService.findCityByName(object.getString("city"));
|
|
|
|
if (apiCity == null) {
|
|
log.error("findByLatAndLng error!", "当前城市暂未开通任何服务" );
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "当前城市暂未开通任何服务,请选择其他城市");
|
|
}
|
|
|
|
BsCompany company = bsCompanyService.selectCompanyByRegion(apiCity.getProvinceCode());
|
|
|
|
if (company == null) {
|
|
log.error("findByLatAndLng error!", "当前城市暂未开通任何服务" );
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "当前城市暂未开通任何服务,请选择其他城市");
|
|
}
|
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
|
jsonObject.put("cityName" , apiCity.getCityName());
|
|
jsonObject.put("provinceName" , apiCity.getProvinceName());
|
|
jsonObject.put("regionId" , company.getRegionId());
|
|
jsonObject.put("companyName" , company.getName());
|
|
jsonObject.put("companyId" , company.getId());
|
|
|
|
return ResponseMsgUtil.success(jsonObject);
|
|
|
|
} catch (Exception e) {
|
|
log.error("HighOrderController --> unionStagingPay() error!", e);
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value = "/findCompanyByCityName", method = RequestMethod.GET)
|
|
@ResponseBody
|
|
@ApiOperation(value = "获取定位信息")
|
|
public ResponseData findCompanyByCityName(
|
|
@RequestParam(name = "cityName", required = true) String cityName
|
|
) {
|
|
try {
|
|
|
|
ApiCity apiCity = commonService.findCityByName(cityName);
|
|
|
|
if (apiCity == null) {
|
|
log.error("findByLatAndLng error!", "当前城市暂未开通任何服务" );
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "当前城市暂未开通任何服务,请选择其他城市");
|
|
}
|
|
|
|
BsCompany company = bsCompanyService.selectCompanyByRegion(apiCity.getProvinceCode());
|
|
|
|
if (company == null) {
|
|
log.error("findByLatAndLng error!", "当前城市暂未开通任何服务" );
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "当前城市暂未开通任何服务,请选择其他城市");
|
|
}
|
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
|
jsonObject.put("cityName" , apiCity.getCityName());
|
|
jsonObject.put("provinceName" , apiCity.getProvinceName());
|
|
jsonObject.put("regionId" , company.getRegionId());
|
|
jsonObject.put("companyName" , company.getName());
|
|
jsonObject.put("companyId" , company.getId());
|
|
|
|
return ResponseMsgUtil.success(jsonObject);
|
|
|
|
} catch (Exception e) {
|
|
log.error("HighOrderController --> unionStagingPay() error!", e);
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value = "/getRebateIntegral", method = RequestMethod.POST)
|
|
@ResponseBody
|
|
@ApiOperation(value = "查询可获取返利积分")
|
|
public ResponseData getRebateIntegral(@RequestBody JSONObject object) {
|
|
try {
|
|
|
|
System.out.println(object);
|
|
|
|
if (object.getInteger("type") == null ||
|
|
object.getLong("companyId") == null ||
|
|
object.getBigDecimal("price") == null
|
|
) {
|
|
log.error("CommonController -> getRebateIntegral() error!","请求参数校验失败");
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR);
|
|
}
|
|
|
|
// 查询订单来源
|
|
Map<String, Object> map = new HashMap<>();
|
|
map.put("type" , object.getInteger("type"));
|
|
map.put("companyId" , object.getLong("companyId"));
|
|
|
|
BsIntegralRebate bsIntegralRebate = bsIntegralRebateService.findIntegralRebateByMap(map);
|
|
|
|
if (bsIntegralRebate == null) {
|
|
throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "暂无积分返利活动");
|
|
}
|
|
|
|
BigDecimal integralNum = object.getBigDecimal("price").multiply(bsIntegralRebate.getPercentage()).setScale( 0, BigDecimal.ROUND_HALF_UP );
|
|
|
|
return ResponseMsgUtil.success(integralNum);
|
|
|
|
} catch (Exception e) {
|
|
log.error("CommonController -> getRebateIntegral() error!", e);
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
}
|
|
|