Browse Source

自投中场景修改

jun.zhou 9 years ago
parent
commit
7bfffb1854

+ 6 - 2
src/main/java/com/cloudcross/ssp/model/mapper/adgroup-place.sql.xml

@@ -38,12 +38,16 @@
 	</select>
 	
 	<!-- 批量插入 -->
-	<insert id="addAdGroupPlaceBatch">
+	<insert id="addAdGroupPlaceBatch" parameterType="java.util.Map">
 		insert into t_adgroup_place 
 		(adgroup_id,place_id,status,supdated)
 		values
 		<foreach collection="placeIdList" item="placeId" index="index" separator=",">
-			(#{adgroupPlace.adgroupId},#{placeId},#{adgroupPlace.status},#{adgroupPlace.supdated})
+			(#{adgroupPlace.adGroupId},#{placeId},#{adgroupPlace.status},#{adgroupPlace.supdated})
 		</foreach>
 	</insert>
+	
+	<select id="queryPlaceByAdgroupId" parameterType="java.lang.Long" resultType="java.lang.Long">
+		select place_id as placeId from t_adgroup_place where status=0 and adgroup_id = #{adgroupId}
+	</select>
 </mapper>

+ 5 - 0
src/main/java/com/cloudcross/ssp/model/mapper/place-class.sql.xml

@@ -10,4 +10,9 @@
 	<delete id="deletePlaceClass" parameterType="long">
 		delete from t_place_class where place_id = #{placeId}
 	</delete>
+	
+	
+	<select id="selectPlaceIdByClassId" parameterType="java.lang.Long" resultType="java.lang.Long">
+		select place_id as placeId from t_place_class where class_id = #{classId} 
+	</select>
 </mapper>

+ 7 - 0
src/main/java/com/cloudcross/ssp/model/mapper/placeclass-information.sql.xml

@@ -18,4 +18,11 @@
 	<select id="findAll" resultType="PlaceClassInformation">
 		select * from t_place_class_info
 	</select>
+	
+	<select id="queryPlaceClassInfoByplaceId" parameterType="java.util.Map" resultType="com.cloudcross.ssp.model.PlaceClassInformation">
+		select DISTINCT(tpci.id) id,tpci.name name from t_place_class_info tpci,t_place_class tpc where tpci.id = tpc.class_id and place_id in
+		<foreach item="placeId" collection="placeIdList" open="(" separator="," close=")">
+		        #{placeId}
+			</foreach>
+	</select>
 </mapper>

+ 3 - 0
src/main/java/com/cloudcross/ssp/service/IAdGroupPlaceService.java

@@ -13,4 +13,7 @@ public interface IAdGroupPlaceService extends IGenericService<AdGroupPlace>{
 	boolean updatedPlaceSupdated(Long adGroupId);
 	
 	public void saveAdGroupPlace(AdGroupPlace adgroupPlace,List<Long>placeIdList);
+	
+	public List<Long> queryPlaceByAdgroupId(Long adgroupId);
+	
 }

+ 2 - 0
src/main/java/com/cloudcross/ssp/service/IPlaceClassInformationService.java

@@ -27,4 +27,6 @@ public interface IPlaceClassInformationService extends IGenericService<PlaceClas
 	 */
 	List<PlaceClassInformation> findAll();
 	
+	
+	List<PlaceClassInformation> queryPlaceClassInformationByAdgroupId(Long adgroupId);
 }

+ 3 - 0
src/main/java/com/cloudcross/ssp/service/IPlaceClassService.java

@@ -1,5 +1,7 @@
 package com.cloudcross.ssp.service;
 
+import java.util.List;
+
 import com.cloudcross.ssp.base.service.IGenericService;
 import com.cloudcross.ssp.model.PlaceClass;
 
@@ -15,4 +17,5 @@ public interface IPlaceClassService extends IGenericService<PlaceClass> {
 	 * @return
 	 */
 	boolean deletePlaceClass(Long placeId);
+	public List<Long> queryPlaceIdByClassId(Long classId);
 }

+ 3 - 0
src/main/java/com/cloudcross/ssp/service/impl/AdGroupPlaceService.java

@@ -89,4 +89,7 @@ public class AdGroupPlaceService implements IAdGroupPlaceService{
 				.map());
 	}
 
+	public List<Long> queryPlaceByAdgroupId(Long adgroupId){
+		return ibatisDao.getList("adGroupPlaceSqlMapper.queryPlaceByAdgroupId", adgroupId);
+	}
 }

+ 20 - 5
src/main/java/com/cloudcross/ssp/service/impl/AdGroupService.java

@@ -7,6 +7,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.lang.ArrayUtils;
+import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -25,6 +26,7 @@ import com.cloudcross.ssp.model.AdgroupWifigroup;
 import com.cloudcross.ssp.model.AdgroupZone;
 import com.cloudcross.ssp.model.Direct;
 import com.cloudcross.ssp.model.Location;
+import com.cloudcross.ssp.model.Log;
 import com.cloudcross.ssp.service.IAdGroupPlaceService;
 import com.cloudcross.ssp.service.IAdGroupScheduleService;
 import com.cloudcross.ssp.service.IAdGroupService;
@@ -33,6 +35,8 @@ import com.cloudcross.ssp.service.IAdgroupZoneService;
 import com.cloudcross.ssp.service.IBannerService;
 import com.cloudcross.ssp.service.IDirectService;
 import com.cloudcross.ssp.service.ILocationService;
+import com.cloudcross.ssp.service.IPlaceClassService;
+import com.cloudcross.ssp.web.advertiser.main.ad.BannerTemplateController;
 import com.cloudcross.ssp.web.widget.SelectorController.ISelector;
 import com.cloudcross.ssp.web.widget.SelectorController.ISelectorProvider;
 
@@ -58,6 +62,10 @@ public class AdGroupService implements IAdGroupService, ISelectorProvider {
 	private IAdgroupZoneService adgroupZoneService;
 	@Autowired
 	private IAdgroupWifigroupService adgroupWifigroupService;
+	@Autowired
+	private IPlaceClassService placeClassService;
+	private static final Logger LOG = Logger.getLogger(AdGroupService.class);
+
 	@Override
 	public AdGroup findById(Long id) {
 		return myBatisDao.get("adGroupSqlMapper.findById", id);
@@ -219,13 +227,20 @@ edit(adGroup);
 		groupFlag = place.startsWith("b");
 		if(placeFlag){
 			place = place.substring(2);
-			String[] placeStr = place.split(",");
+			String[] placeStr = place.split(",");//得到的大类场景
 			AdGroupPlace adGroupPlace = new AdGroupPlace();
 			for(int i=0;i<placeStr.length;i++){
-				adGroupPlace.setAdGroupId(adGroup.getId());
-				adGroupPlace.setPlaceId(Long.valueOf(placeStr[i]).longValue());
-				adGroupPlaceService.add(adGroupPlace);
-				
+				Long classId = Long.valueOf(placeStr[i]).longValue();
+				List<Long>placeIdList = placeClassService.queryPlaceIdByClassId(classId);
+				if(placeIdList != null && placeIdList.size() > 0){
+					adGroupPlace.setAdGroupId(adGroup.getId());
+					adGroupPlace.setStatus(0);
+					adGroupPlace.setSupdated(supdated);
+					adGroupPlaceService.saveAdGroupPlace(adGroupPlace,placeIdList);
+				}else{
+					LOG.debug("场景数据不全,请尽快补全");
+				}
+		
 			}	
 		}
 		

+ 12 - 1
src/main/java/com/cloudcross/ssp/service/impl/PlaceClassInformationService.java

@@ -13,6 +13,7 @@ import com.cloudcross.ssp.base.dao.GenericIBatisDao;
 import com.cloudcross.ssp.common.utils.MapBuilder;
 import com.cloudcross.ssp.common.utils.Pager;
 import com.cloudcross.ssp.model.PlaceClassInformation;
+import com.cloudcross.ssp.service.IAdGroupPlaceService;
 import com.cloudcross.ssp.service.IPlaceClassInformationService;
 import com.cloudcross.ssp.web.widget.SelectorController.ISelector;
 import com.cloudcross.ssp.web.widget.SelectorController.ISelectorProvider;
@@ -20,7 +21,8 @@ import com.cloudcross.ssp.web.widget.SelectorController.ISelectorProvider;
 @Service
 public class PlaceClassInformationService implements IPlaceClassInformationService, ISelectorProvider {
 	private static final Logger LOG = Logger.getLogger(PlaceClassInformationService.class);
-	
+	@Autowired
+	private IAdGroupPlaceService adGroupPlaceService;
 	@Autowired
 	private GenericIBatisDao myBatisDao;
 	
@@ -77,4 +79,13 @@ public class PlaceClassInformationService implements IPlaceClassInformationServi
 				.map();
 	}
 
+	@Override
+	public List<PlaceClassInformation> queryPlaceClassInformationByAdgroupId(Long adgroupId) {
+		//场景小类ID
+		List<Long> placeIdList = adGroupPlaceService.queryPlaceByAdgroupId(adgroupId);
+		Map<String,Object> condition = new HashMap<String,Object>();
+		condition.put("placeIdList", placeIdList);
+		return myBatisDao.getList("placeClassInformationSqlMapper.queryPlaceClassInfoByplaceId", condition);
+	}
+
 }

+ 3 - 0
src/main/java/com/cloudcross/ssp/service/impl/PlaceClassService.java

@@ -59,4 +59,7 @@ public class PlaceClassService implements IPlaceClassService {
 		return true;
 	}
 	
+	public List<Long> queryPlaceIdByClassId(Long classId){
+		return myBatisDao.getList("placeClassSqlMapper.selectPlaceIdByClassId", classId);
+	}
 }

+ 32 - 11
src/main/java/com/cloudcross/ssp/web/advertiser/main/ad/target/OperatorAdGroupController.java

@@ -49,6 +49,7 @@ import com.cloudcross.ssp.model.Location;
 import com.cloudcross.ssp.model.Log;
 import com.cloudcross.ssp.model.Order;
 import com.cloudcross.ssp.model.Place;
+import com.cloudcross.ssp.model.PlaceClassInformation;
 import com.cloudcross.ssp.model.Wifi;
 import com.cloudcross.ssp.model.WifiGroupInfo;
 import com.cloudcross.ssp.model.Zone;
@@ -64,6 +65,7 @@ import com.cloudcross.ssp.service.ILogService;
 import com.cloudcross.ssp.service.IOrderService;
 import com.cloudcross.ssp.service.IPlaceService;
 import com.cloudcross.ssp.service.IWifiService;
+import com.cloudcross.ssp.service.impl.PlaceClassInformationService;
 import com.cloudcross.ssp.service.impl.WifiGroupInfoService;
 import com.cloudcross.ssp.service.impl.ZoneService;
 
@@ -105,7 +107,8 @@ public class OperatorAdGroupController extends SimpleController{
 	private ZoneService zoneService;
 	@Autowired
 	private WifiGroupInfoService wifiGroupInfoService;
-	
+	@Autowired
+	private PlaceClassInformationService placeClassInformationService;
 	/**
 	 *
 	 * @param model 存放传到前台的参数
@@ -205,7 +208,9 @@ public class OperatorAdGroupController extends SimpleController{
 		List<Zone> zoneList = zoneService.queryZoneByCondition(condition);//获取广告位
 		CampaignPojo campaign = campaignService.findCampaignById(campaignId);
 		//找到所有的场景,并且显示出来
-		List<Place> placeList = placeService.findAll();
+		List<PlaceClassInformation> placeList = placeClassInformationService.findAll();
+		
+		
 		model.addAttribute("campaignId", campaignId);
 		model.addAttribute("advertiserId", campaign.getAdvertiserId());	
 		model.addAttribute("orderId", campaign.getOrderId());
@@ -256,8 +261,8 @@ public class OperatorAdGroupController extends SimpleController{
 	 */
 	@RequestMapping("/palceList")
 	@ResponseBody
-	public List<Place> queryPlaceAll(){
-		return this.placeService.findAll();
+	public List<PlaceClassInformation> queryPlaceAll(){
+		return this.placeClassInformationService.findAll();
 	}
 	 
 	/**
@@ -268,16 +273,14 @@ public class OperatorAdGroupController extends SimpleController{
 	 */
 	@RequestMapping("/edit")
 	public String edit(Model model,Long id) {
-		
-		
 		AdGroup adGroup = adGroupService.findById(id);
 		
 		//找到这个投放对应的活动,然后保存活动预算
 		Campaign campaign = campaignService.findById(adGroup.getCampaignId());
 		model.addAttribute("budget", campaign.getTotalBudget());
 		
-		//找到所有的场景,并且显示出来
-		List<Place> placeList = placeService.findAll();
+		//找到所有的大场景场景,并且显示出来
+		List<PlaceClassInformation> placeList = placeClassInformationService.findAll();
 		
 		//已选广告位
 		List<Zone> selectZoneList =  this.zoneService.queryZoneByAdgroupId(id);;
@@ -286,13 +289,10 @@ public class OperatorAdGroupController extends SimpleController{
 		model.addAttribute("selectZoneList", selectZoneList);
 		model.addAttribute("unselectZoneList", unselectZoneList);
 		
-		//已选分组
-		List<WifiGroupInfo> selectWifiGroupInfoList = this.wifiGroupInfoService.queryWifiGroupInfoByadgroupId(id);;
 		//全部分组
 		Map<String,Object>condition = new HashMap<String,Object>();
 		condition.put("operatorId", getLoginUser().getOperatorId());
 		List<WifiGroupInfo> allWifiGroupInfoList = this.wifiGroupInfoService.queryWifiGroupInfoByCondition(condition);
-		model.addAttribute("selectWifiGroupInfoList", selectWifiGroupInfoList);
 		model.addAttribute("allWifiGroupInfoList", allWifiGroupInfoList);
 		
 		//获取所有已选择的场景并且用,分割存放到place里面
@@ -389,6 +389,27 @@ public class OperatorAdGroupController extends SimpleController{
 		return allZoneList;
 	}
 	
+	/**
+	 *已选的场景
+	 * @param adgroupId
+	 * @return
+	 */
+	@RequestMapping("/selectedPlace")
+	@ResponseBody
+	public List<PlaceClassInformation> queryPlaceClassInformationByAdgroupId(Long adgroupId){
+		return this.placeClassInformationService.queryPlaceClassInformationByAdgroupId(adgroupId);
+	}
+	
+	/**
+	 * 已选分组
+	 * @param adgroupId
+	 * @return
+	 */
+	@RequestMapping("/selectedWifigroup")
+	@ResponseBody
+	public List<WifiGroupInfo> queryWifiGroupInfobByAdgroupId(Long adgroupId){
+		return this.wifiGroupInfoService.queryWifiGroupInfoByadgroupId(adgroupId);
+	}
 	
 	@RequestMapping("/enable")
 	@ResponseBody